Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-07-2011
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Exclamation Crear una libreria para XMPP (Jabber) en Delphi

Hola amigos.

Quisiera que de ser posible me ayudaran a crear una libreria, conjunto de clases o componentes o como sea pero con la idea de soportar el protocolo XMPP. Yo podria aportar todo lo que tengo echo y ustedes me dan una guia y me ayudan con algo de codigo.
Responder Con Cita
  #2  
Antiguo 17-07-2011
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Por ejemplo esta seria la clase para implementar los mensajes XMPP.

Código Delphi [-]
unit xmppMessageClass;

interface

uses xmldom, XMLIntf, msxmldom, XMLDoc;

//Los diferentes tipos de mensajes que existen
type TMessageType = (mtChat, mtNormal, mtError, mtGroupChat, mtHeadline);

type TXMPPMessage = class(TObject)
  private
    fXMLDocument: string;
    
    fType: TMessageType;
    fFrom: string;
    fTo: string;
    fSubject: string;
    fBody: string;
    fThread: string;
    fId: string;

  protected
    procedure SetType( pType: TMessageType );
    procedure SetFrom( pFrom: string );
    procedure SetTo( pTo: string );
    procedure SetSubject( pSubject: string );
    procedure SetBody( pBody: string );
    procedure SetThread( pThread: string );
    procedure SetId( pId: string );
  public
    property MessageType: TMessageType read fType write SetType;
    property From: string read fFrom write SetFrom;
    property To_: string read fTo write SetTo;
    property Subject: string read fSubject write SetSubject;
    property Body: string read fBody write SetBody;
    property Thread: string read fThread write SetThread;
    property Id: string read fId write SetId;

    function GetXmlText(): string; 

  constructor Create();
end;

implementation

uses Dialogs, unMain;

{ TXMPPMessage }

constructor TXMPPMessage.Create;
begin

  fXMLDocument := '';

end;

function TXMPPMessage.GetXmlText: string;
begin
  Result := fXMLDocument;
end;

procedure TXMPPMessage.SetBody(pBody: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
      fBody := pBody;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;
      vXMLDoc.DocumentElement.ChildNodes['body'].Text := pBody;
      fXMLDocument := vXMLDoc.XML.Text;
   finally
     vXMLDoc.Free;
   end;
end;

procedure TXMPPMessage.SetFrom(pFrom: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
      fFrom := pFrom;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;
      vXMLDoc.DocumentElement.Attributes['from'] := pFrom;
      fXMLDocument := vXMLDoc.XML.Text;
   finally
     vXMLDoc.Free;
   end;
end;

procedure TXMPPMessage.SetId(pId: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
      fId := pId;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;
      vXMLDoc.DocumentElement.Attributes['id'] := pId;
      fXMLDocument := vXMLDoc.XML.Text;
   finally
     vXMLDoc.Free;
   end;
end;

procedure TXMPPMessage.SetSubject(pSubject: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
      fSubject := pSubject;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;
      vXMLDoc.DocumentElement.ChildNodes['subject'].Text := pSubject;
      fXMLDocument := vXMLDoc.XML.Text;
   finally
     vXMLDoc.Free;
   end;
end;

procedure TXMPPMessage.SetThread(pThread: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
      fThread := pThread;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;
      vXMLDoc.DocumentElement.ChildNodes['thread'].Text := pThread;
      fXMLDocument := vXMLDoc.XML.Text;
   finally
     vXMLDoc.Free;
   end;
end;

procedure TXMPPMessage.SetTo(pTo: string);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try
    fTo := pTo;
    vXMLDoc.XML.Text := fXMLDocument;
    vXMLDoc.Active := True;
    vXMLDoc.DocumentElement.Attributes['to'] := pTo;
    fXMLDocument := vXMLDoc.XML.Text;
  finally
    vXMLDoc.Free;
  end;

end;

procedure TXMPPMessage.SetType(pType: TMessageType);
var
  vXMLDoc: TXMLDocument;
begin

  vXMLDoc := TXMLDocument.Create(Form1);

  try

      fType := pType;
      vXMLDoc.XML.Text := fXMLDocument;
      vXMLDoc.Active := True;

      case pType of
        mtChat: vXMLDoc.DocumentElement.Attributes['type'] := 'chat';
        mtNormal: vXMLDoc.DocumentElement.Attributes['type'] := 'normal';
        mtError: vXMLDoc.DocumentElement.Attributes['type'] := 'error';
        mtGroupChat: vXMLDoc.DocumentElement.Attributes['type'] := 'groupchat';
        mtHeadline: vXMLDoc.DocumentElement.Attributes['type'] := 'headline';
      end;

      fXMLDocument := vXMLDoc.XML.Text;
  finally
    vXMLDoc.Free;
  end;
  
end;

end.

Un ejemplo de uso de la clase podria ser.

Código Delphi [-]
procedure (...)
var
  vMessage: TXMPPMessage;
begin

  vMessage := TXMPPMessage.Create;
  vMessage.MessageType := mtChat;
  vMessage.To_ := 'nquesada@jabber.uci.cu';
  vMessage.Subject := 'Esto es un mensaje de prueba';
  vMessage.Thread := '243GG235543G45G-34G-34345VV99';
  vMessage.Id := '32aa4';
  vMessage.From := 'fhernandez@jabber.uci.cu/UCi Messenger';
  vMessage.Body := 'Caballero diganme como va quedando esto por que a mi me parece que esta super chulo !!!';

  ShowMessage(vMessage.GetXmlText());

end;

La llamada a

Código Delphi [-]
vMessage.GetXmlText();

nos devolveria algo como esto, que es lo que el servidor XMPP entiende.

Código:
<message type="chat" to="nquesada@jabber.uci.cu" id="32aa4" from="fhernandez@jabber.uci.cu/UCi Messenger"><subject>Esto es un mensaje de prueba</subject><thread>243GG235543G45G-34G-34345VV99</thread><body>Caballero diganme como va quedando esto por que a mi me parece que esta super chulo !!!</body></message>

Última edición por fide_uci fecha: 17-07-2011 a las 14:46:02.
Responder Con Cita
  #3  
Antiguo 17-07-2011
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Como ven, ahi solo hay implementada una clase. La de los mensajes. Me faltaria por implementar la de los IQ y la de los Presence. Pero el problema es que no se mas o menos si hacer un conjunto de componentes o hacer un conjunto de clases. Me pueden ayudar con esto por favor?. Se los voy a agradecer en el alma.
Responder Con Cita
  #4  
Antiguo 17-07-2011
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Estoy ahora implementando la clase para las presencias. Luego les comento más y voy a seguir publicando codigos hasta que alguien se anime a ayudarme.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear un form en una libreria Dll miguelcba Varios 4 06-10-2008 23:55:30
Duda al crear una libreria meme C++ Builder 5 02-10-2007 11:47:26
Librería para hacer peticiones HTTP para delphi 5 rlago Internet 3 06-11-2006 10:28:18
Protocolo jabber. Tony_G Internet 2 04-06-2005 13:14:58
Crear un unit tipo libreria D@byt OOP 7 06-05-2005 08:25:36


La franja horaria es GMT +2. Ahora son las 10:55:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi