A biblioteca Atom fornece um conjunto base de funcionalidade para utilizar feeds Atom. Ela fornece um modelo de dados para manipular o acesso a vários elementos de feeds e entradas Atom, assim como um objeto de transporte para manipular as diversas interações com servidores da Web, para manipular feeds Atom padrão e o APP (Atom Publishing Protocol).
Para obter mais informações, leia sobre a Especificação Atom Syndication. Para obter mais informações, leia sobre o Atom Publishing Protocol.
A recuperação de um feed é simples. Com todas as interações do servidor a partir do cliente, um objeto AtomIO é criado. Este é o objeto de transporte referido acima, que manipula qualquer interação com o servidor Atom. Iniciaremos com uma tarefa simples, como recuperar um feed.
O feed utilizado é o mesmo da página de exemplo de uso do widget. Ele está disponível aqui. O conteúdo desse feed é mostrado a seguir para referência.
<?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 de Amostra do 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 Teste #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 é uma entrada de amostra em nosso feed Atom. É simplesmente um parágrafo extenso no resumo.<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>Usuário do Teste</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Entrada de Teste #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Esta é uma entrada de amostra em nosso feed Atom. É simplesmente um parágrafo extenso no resumo. Este é um texto linear. 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>
Agora, para criar um objeto feed a partir desse feed, utilize o seguinte código:
var _feed = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(feed, domNode){ _feed = feed; } atomIO.getFeed("samplefeed.xml", getComplete);
Esse bloco de código define primeiramente uma variável _feed, cria um objeto AtomIO, define uma função para ser utilizada como um retorno de chamada e, por último chama a função getFeed no objeto AtomIO para buscar o feed. No bloco de código anterior, a cadeia "samplefeed.xml" é a URL para o feed.
Com um objeto feed, você pode buscar qualquer um dos atributos do feed (como o título, ID, autores, contribuidores, data de atualização, etc). Além disso, é possível buscar as entradas sob o feed, como uma matriz de entradas ou individualmente por ID.
function getComplete(/* Objeto de Feed Atom */ feed, /* Objeto de Nó DOM */ domNode){ _feed = feed; var id = _feed.id; // agora o ID é igual a "http://www.onlamp.com/" var title = _feed.title.value; // _feed.title é um objeto ibm_atom.io.atom.Content, com um // valor de "Example.com" var arrayOfEntries = _feed.entries; // uma matriz de todas as entradas. O comprimento atual é 3. var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); // a entrada especificada pela cadeia de ID especificada. Neste caso, // é a primeira entrada no feed. }
Com um objeto Entry individual, você pode executar vários itens similares como em um objeto feed, inclusive obter o título, ID e data de atualização da entrada, etc. A única função exclusiva em um objeto de entrada é a capacidade de obter a URL de edição para essa entrada. Essa capacidade não é mostrada neste exemplo, assim como o feed de amostra anterior não inclui nenhuma entrada editável.
function getComplete(feed, domNode){ _feed = feed; var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); var id = specificEntry.id; // o ID da entrada. var title = specificEntry.title.value; // o título da entrada é um objeto ibm_atom.io.atom.Content, // o valor do texto está no atributo 'value' desse objeto. var updated = specificEntry.updated; // o objeto Date atualizado da entrada. }
Todos os outros objetos do modelo de dados, como autores e contribuidores, links e etc, operam de forma semelhante e possuem seus próprios atributos e funções. Para obter mais informações, efetue o registro de saída da página de referência.
O objeto AtomIO suporta outras funções para enviar os dados de volta ao servidor, inclusive obter uma única entrada utilizando a função getEntry. Isso é geralmente para analisar um documento de entrada Atom, mas se apresentado com um documento de feed, retorna a primeira entrada desse feed.
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Objeto de Entrada Atom */ entry, /* Objeto de Nó DOM */ domNode){ _entry = entry; var id = _entry.id; // o ID da entrada. var title = _entry.title.value; // o título da entrada é um objeto ibm_atom.io.atom.Content, // o valor do texto está no atributo 'value' desse objeto. var updated = _entry.updated; // o objeto Date atualizado da entrada. } atomIO.getEntry("samplefeed.xml", getComplete);
Além disso, você pode utilizar o objeto AtomIO para enviar entradas atualizadas de volta para o servidor, com a URL sendo buscada da entrada editada. Consulte o exemplo a seguir:
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Objeto de Entrada Atom */ entry, /* Objeto de Nó DOM */ domNode){ _entry = entry; _entry.addLink("editURL", "edit"); _entry.title.value = "Título do Teste!"; function getComplete2(entry2, domNode){} atomIO.updateEntry(_entry, getComplete2); } atomIO.getEntry("samplefeedEdit.xml", getComplete);
O código anterior não funciona no estado em que se encontra, uma vez que a 'editURL' deve ser alterada para uma URL válida e um servidor APP é necessário para responder ao pedido.
Existem outras funções disponíveis no objeto AtomIO; entretanto, a maioria segue o mesmo padrão que as funções getFeed, getEntry e updateEntry acima. Consulte os detalhes na página de referência.