La biblioteca Atom proporciona un conjunto básico de funciones para utilizar los canales de información Atom. Proporciona un modelo de datos para manejar el acceso a los distintos elementos de las entradas y los canales de información Atom, así como un objeto de transporte para manejar las distintas interacciones con los servidores Web para manejar los canales de información Atom estándar y el Protocolo de publicación Atom (APP).
Para obtener más información, consulte la Especificación de sindicación Atom. Para obtener más información, consulte el Protocolo de publicación Atom.
La recuperación de un canal de información es sencilla. Con todas las interacciones de servidor del cliente, se crea un objeto AtomIO. Este es el objeto de transporte al que se ha hecho referencia anteriormente, que maneja las interacciones con el servidor Atom. Empezaremos con una tarea sencilla como, por ejemplo, recuperar un canal de información.
El canal de información utilizado es el mismo que el de la página de ejemplo de uso del widget. Está disponible aquí. A continuación, se muestra el contenido de este canal de información como referencia:
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Canal de información de ejemplo de Example.com</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Entrada de prueba #1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>Esta es una entrada de ejemplo en el canal de información Atom. Simplemente es un párrafo grande en el resumen.<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Usuario de prueba</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Entrada de prueba #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Esta es una entrada de ejemplo en el canal de información Atom. Simplemente es un párrafo grande en el resumen. Se trata de texto plano. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
Ahora, para crear un objeto de canal de información a partir de este canal de información, utilice el código siguiente:
var _feed = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(feed, domNode){ _feed = feed; } atomIO.getFeed("samplefeed.xml", getComplete);
Este bloque de código define primero una variable _feed, crea un objeto AtomIO, define una función que se utilizará como retorno de llamada y, por último, invoca la función getFeed en el objeto AtomIO para captar el canal de información. En el bloque de código anterior, la serie "samplefeed.xml" es el URL del canal de información.
Con un objeto de canal de información, puede captar los atributos del canal de información que desee (por ejemplo, el título, el ID, los autores, los colaboradores, la fecha actualizada, etc.). Asimismo, pueden captarse las entradas debajo del canal de información, ya sea como una matriz de entradas o individualmente a partir del ID.
function getComplete(/* Atom Feed Object */ feed, /* DOM Node Object */ domNode){ _feed = feed; var id = _feed.id; // id es ahora igual a "http://www.onlamp.com/" var title = _feed.title.value; // _feed.title es un objeto ibm_atom.io.atom.Content, // con un valor "Example.com" var arrayOfEntries = _feed.entries; // una matriz de todas las entradas. La longitud actual es 3. var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); // la entrada especificada por la serie de ID dada. En este caso // es la primera entrada del canal del información. }
Con un objeto de entrada individual, puede obtener muchos elementos parecidos a los de un objeto de canal de información, por ejemplo, el título de la entrada, el ID, la fecha actualizada, etc. La única función exclusiva en un objeto de entrada es la capacidad de obtener el URL de edición de la entrada. Esta capacidad no se muestra en este ejemplo, ya que el canal de información anterior no incluye entradas editables.
function getComplete(feed, domNode){ _feed = feed; var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); var id = specificEntry.id; // el id de la entrada. var title = specificEntry.title.value; // el título de la entrada es un objeto ibm_atom.io.atom.Content, // el valor de texto está en el atributo 'value' del objeto. var updated = specificEntry.updated; // el objeto de fecha actualizado de la entrada. }
Los otros objetos de modelos de datos como, por ejemplo, los autores, colaboradores, enlaces, etc. operan de forma parecida y tienen sus propios atributos y funciones. Para obtener más información, consulte la página de referencia.
El objeto AtomIO da soporte a otras funciones para enviar datos de nuevo al servidor, por ejemplo, obtiene una entrada individual utilizando la función getEntry. Esto normalmente permite analizar un documento de entrada Atom, pero si se presenta un documento de canal de información, devuelve la primera entrada del canal de información.
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; var id = _entry.id; // el id de la entrada. var title = _entry.title.value; // el título de la entrada es un objeto ibm_atom.io.atom.Content, // el valor de texto está en el atributo 'value' del objeto. var updated = _entry.updated; // el objeto de fecha actualizado de la entrada. } atomIO.getEntry("samplefeed.xml", getComplete);
Asimismo, puede utilizar el objeto AtomIO para enviar entradas actualizadas de nuevo al servidor, con el URL que se capta de la entrada editada. Véase el ejemplo siguiente:
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; _entry.addLink("editURL", "edit"); _entry.title.value = "Test Title!"; function getComplete2(entry2, domNode){} atomIO.updateEntry(_entry, getComplete2); } atomIO.getEntry("samplefeedEdit.xml", getComplete);
El código anterior no funciona tal cual, ya que 'editURL' debe cambiarse por un URL válido y se necesita un servidor APP para responder a la petición.
Existen otras funciones disponibles en el objeto AtomIO; no obstante, la mayoría siguen el mismo patrón que las funciones getFeed, getEntry y updateEntry anteriores. Consulte los detalles en la página de referencia.