martes, agosto 09, 2005

ATOM API .. [OK]

Bueno acabo de terminar, la dll para acceso a Blogger ya esta lista. Esta dll sera carga como plugin en monoblog. Aunque esta ultima configuracion todavia no la tenemos del todo clara con Gmikex.

En unos dias JuanPe ya deberia tener lista una GUI de prueba, que permita usar monoblog por parte de cualquier persona interesada en cooperar en la identificacion de errores.

Bueno la Libreria de ATOM esta en el SVN, en /mono-blog/team/NeCuDeCo/ATOM/ATOM.dll

lunes, agosto 08, 2005

DemoWriter un paso mas para MonoBlog

Este ultimo fin de semana, he estado empapandome de lo que se habia avanzado con MonoBlog, ya que por otros motivos no tenia mucho tiempo. He revisado la libreria base hecha por Gmikex y le he hecho unas modificaciones:

  • Documentacion: He mejorado la documentacion de la libreria utilizando etiquetas XML, asi el mantenimiento y su comprension de la libreria sera mas facil.

  • Interfaz Provider: Siguiendo la recomendacion de Gmikex he creado una interfaz Provider, la cual deberan implementar cada clase que maneje un motor de blog diferente (Blogger, WordPress, etc.). Esto facilitara la adaptacion para mas motores blog.

  • Actualizacion del codigo: He hecho unos cambios en el codigo, para que se entienda mejor y ademas realize su trabajo mas eficientemente. Ademas he agregado y adaptado la funcionalidad de posteo hecha por NeCuDeCo.

  • Creacion de la gui DemoWriter: He creado una gui simple solo para verificar el correcto funcionamiento de la libreria de MonoBlog, ademas he puesto algunas ideas que tengo de como sea la GUI final de MonoBlog. Como por ejemplo la capacidad de postear una misma entrada en varios blogs diferentes, por el momento solo funciona con Blogger, pero la idea es que funcione con mas (WordPress, etc.). Esto funcionalidad me va a ser muy util, porque por ejemplo en mi caso, cada avance que haga con MonoBlog lo posteare en el blog del proyecto, pero ademas desearia postearlo en mi blog personal, por el momento no se puede ya que mi blog esta en blogsome :'(. Como a mi esta funcionalidad le puede ser util a varias personas, como NeCuDeCo que tiene como 40 Blogs :P.





Un pantallazo de DemoWriter


Lo he probado en Windows y por el lado de la portabilidad de MonoBlog, va bien :D. El binario y el codigo esta en el svn de MonoBlog, aqui.

Probando DemoWriter

Este es un post desde una gui de prueba para MonoBlog

sábado, agosto 06, 2005

Diagrama Atom.dll

Bueno aca les dejo un diagrama sencillo nomas de lo que he avanzado en la libreria de ATOM.

MonoBlog ya puede postear

BUeno al fin logre postear desde monoblog :P

viernes, agosto 05, 2005

Modificaciones en Atom.lib

Bueno a pedido del publico y despues de mucho tiempo de inactividad me puse a trabajar hoy en la mañana (hace un par de horas) y realize algunas modificaciones a la libreria de Gmikex. Esta vez el codigo es mucho mas sencillo, aunque por si las moscas (jeje nunca falta :P) le he incorparado comentarios ;)


using System;
using System.Net;
using System.IO;
using System.Xml;
using System.Collections;
using System.Security.Cryptography.X509Certificates;

class atom
{

//Author: NeCuDeCo
public static void Main(String[] args)
{
if (args.Length != 2)
{
//La ejecucion del programa requeire que se el pase dos argumentos obligatorios, el nombvre usuario de blogger y si contraseña
Console.WriteLine("mono atom.exe ");
return;
}

string usuario = args[0];
string passwd = args[1];

//Presentandome ante blogger como el usuario y obteniendo la lista de servicios
atom a = new atom();
string stringXML = a.getfeed("http://www.blogger.com/atom",usuario,passwd);

XmlTextReader xml = new XmlTextReader(new StringReader(stringXML));

XmlDocument doc = new XmlDocument();
doc.Load(xml);
XmlNode node = doc.DocumentElement;

foreach ( XmlNode subnode in node.ChildNodes)
{

if ( subnode.LocalName == "link" )
{
//Buscando y Reportando los Servicios o blogs donde puedo postear
XmlElement xnode = (XmlElement) subnode;
if (xnode.GetAttribute("rel") == "service.post")
Console.WriteLine(xnode.GetAttribute("title"));
}

}
}


//funcion Definida por Gmikex para obtener la lista de servicios de blogguer.
//Modificaciones de NeCuDeCo
public string getfeed(string url,string login, string passwd){
string responseString="";
try{
HttpWebRequest myReq = (HttpWebRequest) HttpWebRequest.Create(url);
myReq.PreAuthenticate =true;

NetworkCredential networkCredential=new NetworkCredential(login,passwd);
myReq.Credentials=networkCredential;

HttpWebResponse response = (HttpWebResponse)myReq.GetResponse();
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
responseString = streamRead.ReadToEnd();
return responseString;
}catch(Exception ex){
Console.WriteLine("ERROR");
return responseString;
}
}
}