La libreria Atom fornisce una serie di funzionalità di base per l'utilizzo di feed Atom. Fornisce inoltre un modello di dati per gestire l'accesso ai vari elementi di voci e feed Atom, oltre che un oggetto di trasporto per gestire le varie interazioni con server Web ed i feed Atom standard e APP (Atom Publishing Protocol).
Per ulteriori informazioni, consultare la specifica di syndication Atom. Per ulteriori informazioni, consultare il protocollo di pubblicazione Atom.
Il richiamo di un feed è semplice. Con tutte le interazioni del server dal client, viene creato un oggetto AtomIO. Questo è l'oggetto di trasporto specificato in precedenza, che gestisce qualsiasi interazione con il server Atom. Si inizierà con un'attività semplice, come ad esempio il recupero di un feed.
Il feed utilizzato è lo stesso presente nella pagina dell'esempio di utilizzo del widget. È disponibile qui. Il contenuto di questo feed viene mostrato di seguito per riferimento.
<?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'>Feed di esempio di 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>Voce di verifica n.1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi dimensioni nel riepilogo.<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>Utente di verifica</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Voce di verifica n.2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi dimensioni nel riepilogo. Si tratta di testo diretto. 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>
A questo punto, per creare un oggetto feed da questo feed, utilizzare il seguente codice:
var _feed = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(feed, domNode){ _feed = feed; } atomIO.getFeed("samplefeed.xml", getComplete);
Questo blocco di codice definisce prima una variabile _feed, crea un oggetto AtomIO, definisce una funzione da utilizzare come callback e infine richiama la funzione getFeed sull'oggetto AtomIO per richiamare il feed. Nel blocco di codice precedente, la stringa "samplefeed.xml" è l'URL per il feed.
Con un oggetto feed, è possibile richiamare gli attributi del feed (ad esempio, il titolo, l'ID, gli autori, i contributor, la data di aggiornamento e così via). È inoltre possibile richiamare le voci sottostanti al feed, come array di voci o singolarmente come ID.
function getComplete(/* oggetto feed Atom */ feed, /* oggetto nodo DOM */ domNode){ _feed = feed; var id = _feed.id; // id uguale a "http://www.onlamp.com/" var title = _feed.title.value; // _feed.title è un oggetto ibm_atom.io.atom.Content, con valore // "Example.com" var arrayOfEntries = _feed.entries; // un array di tutte le voci. La lunghezza corrente è 3. var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); // la voce specificata dalla stringa ID fornita. In questo caso, // è la prima voce del feed. }
Con un singolo oggetto Voce, è possibile creare diverse voci simile su un oggetto feed, incluso il titolo della voce, l'id, la data di aggiornamento e così via. L'unica funzione su un oggetto voce è la possibilità di richiamare l'URL di modifica per tale voce. Tale possibilità non viene mostrata in questo esempio, poiché il feed di esempio precedente non include voci modificabili.
function getComplete(feed, domNode){ _feed = feed; var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); var id = specificEntry.id; // l'id della voce. var title = specificEntry.title.value; // il titolo della voce è un oggetto ibm_atom.io.atom.Content, // il valore di testo si trova nell'attributo 'value' di tale oggetto. var updated = specificEntry.updated; // l'oggetto Data aggiornato della voce. }
Gli altri oggetti del modello di dati, ad esempio autori e contributor, collegamenti e così via, funzionano tutti in modo simile e dispongono dei propri attributi e funzioni. Per ulteriori informazioni, consultare la pagina di riferimento.
L'oggetto AtomIO supporta altre funzioni per la restituzione dei dati al server, incluso il richiamo di una singola voce utilizzando la funzione getEntry. Tale funzione ha generalmente lo scopo di analizzare un documento della voce Atom ma, se viene presentata con un documento feed, restituisce la prima voce di tale feed.
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* oggetto voce Atom */ voce, /* oggetto nodo DOM */ domNode){ _entry = entry; var id = _entry.id; // l'id della voce. var title = entry.title.value; // il titolo della voce è un oggetto ibm_atom.io.atom.Content, // il valore di testo si trova nell'attributo 'value' di tale oggetto. var updated = entry.updated; // l'oggetto Data aggiornato della voce. } atomIO.getEntry("samplefeed.xml", getComplete);
È inoltre possibile utilizzare l'oggetto AtomIO per restituire le voci al server, con l'URL richiamato dalla voce modificata. Considerare il seguente esempio:
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* oggetto voce Atom */ voce, /* oggetto nodo DOM */ 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);
Il codice precedente non funziona nello stato in cui si trova, poiché è necessario modificare 'editURL' in un URL valido ed il server APP deve rispondere alla richiesta.
Sull'oggetto AtomIO sono disponibili altre funzioni, tuttavia, è necessario seguire lo stesso modello delle suddette funzioni getFeed, getEntry e updateEntry. Consultare i dettagli sulla pagina di riferimento.