aboutsummaryrefslogtreecommitdiff
path: root/files/es/api_de_acceso_a_canales/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/api_de_acceso_a_canales/index.html')
-rw-r--r--files/es/api_de_acceso_a_canales/index.html166
1 files changed, 166 insertions, 0 deletions
diff --git a/files/es/api_de_acceso_a_canales/index.html b/files/es/api_de_acceso_a_canales/index.html
new file mode 100644
index 0000000000..7c21ceb776
--- /dev/null
+++ b/files/es/api_de_acceso_a_canales/index.html
@@ -0,0 +1,166 @@
+---
+title: API de acceso a canales
+slug: API_de_acceso_a_canales
+tags:
+ - Complementos
+ - Todas_las_Categorías
+ - extensiones
+translation_of: Mozilla/Tech/Feed_content_access_API
+---
+<p><a href="/es/Firefox_2_para_desarrolladores" title="es/Firefox_2_para_desarrolladores">Firefox 2</a> y Thunderbird 2 introducen una serie de interfaces que  hacen más sencillo que los autores de extensiones accedan a los canales RSS y Atom.</p>
+<h2 id="Interfaces_del_canal" name="Interfaces_del_canal">Interfaces del canal</h2>
+<dl>
+ <dt>
+ <code><a href="/es/NsIFeed" title="es/NsIFeed">nsIFeed</a></code></dt>
+ <dd>
+ Representa un canal RSS o Atom.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedContainer" title="es/NsIFeedContainer">nsIFeedContainer</a></code></dt>
+ <dd>
+ Una clase básica subclasificada por varias interfaces relacionadas al canal.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedElementBase" title="es/NsIFeedElementBase">nsIFeedElementBase</a></code></dt>
+ <dd>
+ Una clase básica subclasificada por varias de las otras interfaces relacionadas con el canal.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedEntry" title="es/NsIFeedEntry">nsIFeedEntry</a></code></dt>
+ <dd>
+ Representa una única entrada en un canal RSS o Atom.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedGenerator" title="es/NsIFeedGenerator">nsIFeedGenerator</a></code></dt>
+ <dd>
+ Describe el programa que generó un canal RSS o Atom.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedPerson" title="es/NsIFeedPerson">nsIFeedPerson</a></code></dt>
+ <dd>
+ Representa a una persona. Contiene el nombre de la persona, la dirección de correo electrónico, y la dirección de la página personal.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedProcessor" title="es/NsIFeedProcessor">nsIFeedProcessor</a></code></dt>
+ <dd>
+ Analiza canales RSS y Atom.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedProgressListener" title="es/NsIFeedProgressListener">nsIFeedProgressListener</a></code></dt>
+ <dd>
+ Implementada por el programa que quiere analizar un canal RSS o Atom, para recibir mensajes durante el proceso de análisis.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedResult" title="es/NsIFeedResult">nsIFeedResult</a></code></dt>
+ <dd>
+ Describe el resultado al analizar un canal.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedResultListener" title="es/NsIFeedResultListener">nsIFeedResultListener</a></code></dt>
+ <dd>
+ Implementado por el programa que quiere analizar un canal RSS o Atom para recibir avisos cuando el análisis se complete.</dd>
+ <dt>
+ <code><a href="/es/NsIFeedTextConstruct" title="es/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></dt>
+ <dd>
+ Representa valores de texto en un canal; incluye funciones que permiten traer el texto como texto sin formato o como HTML.</dd>
+ <dt>
+ <code><a href="/es/NsIScriptableUnescapeHTML" title="es/NsIScriptableUnescapeHTML">nsIScriptableUnescapeHTML</a></code></dt>
+ <dd>
+ Una clase de utilidad que elimina las secuencias de escape de las cadenas HTML.</dd>
+</dl>
+<h2 id="Ejemplo:_Leer_un_canal_de_la_Web" name="Ejemplo:_Leer_un_canal_de_la_Web">Ejemplo: Leer un canal de la Web</h2>
+<p>Realmente es bastante fácil leer y analizar un canal: Usa un <code><a href="/es/XMLHttpRequest" title="es/XMLHttpRequest">XMLHttpRequest</a></code> para cargar el canal, y luego pasa su cadena a un <code><a href="/es/NsIFeedProcessor" title="es/NsIFeedProcessor">nsIFeedProcessor</a></code> para analizarlo.</p>
+<p>Cargar el canal y enviarlo al analizador sintáxtico se hace usando un código similar a éste:</p>
+<pre> fetch: function(feedUrl)
+ {
+ var httpRequest = null;
+
+ function infoReceived() {
+ var data = httpRequest.responseText;
+
+ var ioService = Components.classes['@mozilla.org/network/io-service;1']
+ .getService(Components.interfaces.nsIIOService);
+ var uri = ioService.newURI(feedUrl, null, null);
+
+ if (data.length) {
+ var parser = Components.classes["@mozilla.org/feed-processor;1"]
+ .createInstance(Components.interfaces.nsIFeedProcessor);
+ var listener = new FeedTestResultListener();
+ try {
+ parser.listener = listener;
+ parser.parseFromString(data, uri);
+ }
+ catch(e) {
+ alert("Error al analizar el canal.");
+ }
+ }
+ }
+
+ httpRequest = new XMLHttpRequest();
+
+ httpRequest.open("GET", feedUrl, true);
+ try {
+ httpRequest.onload = infoReceived;
+ httpRequest.send(null);
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+</pre>
+<p>La interfaz <code><a href="/es/NsIFeedProcessor" title="es/NsIFeedProcessor">nsIFeedProcessor</a></code> te permite analizar los datos del canal desde varias fuentes distintas; en este caso, estamos cargando un documento en una cadena, para seguidamente analizar la cadena usando su método <code>parseFromString()</code>. Sin embargo, también se podría analizar desde un archivo usando <code>parseFromStream()</code>, o directamente desde una URL usando <code>parseAsync()</code>.</p>
+<p>El procesamiento real de análisis del canal se hace por un método llamado <code>handleResult()</code> en el objeto <code>FeedTestResultListener</code>. Ese código es similar a éste:</p>
+<pre> FeedTestResultListener.prototype = {
+ handleResult: function(result) {
+ var feed = result.doc;
+
+ feed.QueryInterface(Components.interfaces.nsIFeed);
+
+ // Abre una nueva ventana
+
+ var win = window.open("", "FeedTest_Window");
+ var doc = win.document;
+
+ doc.open();
+
+ // Escribe la cabecera HTML y el título de la página
+
+ doc.write("&lt;html&gt;&lt;head&gt;&lt;title&gt;Feed: " + feed.title.text + "&lt;/title&gt;&lt;/head&gt;&lt;body&gt;");
+ doc.write("&lt;h1&gt;" + feed.title.text + "&lt;/h1&gt;&lt;p&gt;");
+
+ var itemArray = feed.items;
+ var numItems = itemArray.length;
+
+ // Write the article information
+
+ if (!numItems) {
+ doc.write("&lt;i&gt;¡Que no haya noticias es buena noticia!&lt;/i&gt;");
+ }
+ else {
+ var i;
+ var theEntry;
+ var theUrl;
+ var info;
+
+ for (i=0; i&lt;numItems; i++) {
+ theEntry = itemArray.queryElementAt(i, Components.interfaces.nsIFeedEntry);
+
+ if (theEntry) {
+ theUrl =
+ doc.write('&lt;b&gt;&lt;a href="' + theEntry.link.resolve("") + '"&gt;' + theEntry.title.text + '&lt;/a&gt;&lt;/b&gt;&lt;br&gt;');
+ if (theEntry.summary) {
+ info = theEntry.summary.text + "&lt;p&gt;&lt;hr&gt;&lt;p&gt;";
+ }
+ else {
+ info = theEntry.content.text + "&lt;p&gt;&lt;hr&gt;&lt;p&gt;";
+ }
+ doc.write("&lt;blockquote&gt;" + info);
+ doc.write("&lt;/blockquote&gt;&lt;p&gt;");
+ }
+ }
+ }
+
+ // Cerramos el documento; ¡hemos acabado!
+
+ doc.write("&lt;/body&gt;&lt;/html&gt;");
+ doc.close();
+ }
+ }
+</pre>
+<p>La función <code>handleResult()</code> recibe como argumento un <code><a href="/es/NsIFeedResult" title="es/NsIFeedResult">nsIFeedResult</a></code> que describe un canal; su propiedad <code>doc</code> es un <code><a href="/es/NsIFeed" title="es/NsIFeed">nsIFeed</a></code> que contiene todos los datos del canal.</p>
+<p>Para obtener el título del canal, se consulta la propiedad <code>feed.title</code>. El título es un <code><a href="/es/NsIFeedTextConstruct" title="es/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code> que puede representar el texto en varios formatos; obtenemos su propiedad <code>text</code> para representar el título del canal como un texto codificado en HTML. Podríamos, alternativamente, usar su método <code>plainText()</code> para obtener una copia del título traducido a texto sin formato.</p>
+<p>Luego examinamos el array (arreglo) de artículos en el canal consultando el <code>feed.items</code> <code><a href="/es/NsIArray" title="es/NsIArray">nsIArray</a></code>. Este array contiene los objetos <code><a href="/es/NsIFeedEntry" title="es/NsIFeedEntry">nsIFeedEntry</a></code> que describen cada artículo del canal.</p>
+<p>Construimos el contenido de los documentos accediendo a las propiedades del título, enlace, resumen y contenido para cada artículo. La URL completa del enlace se recupera usando el método <code>resolve()</code> del enlace.</p>
+<p>Para iniciar la lectura de un canal, simplemente llamamos <code>fetch(<em>url</em>)</code>. Esto abre una nueva ventana con el contenido del canal, pudiendo hacer clic en cada título de las entradas que nos llevarán al artículo en sí.</p>
+<p>Para los detalles de cada uno de las interfaces de acceso al canal, visita sus respectivas páginas de referencia.</p>