diff options
Diffstat (limited to 'files/pl/api_dostępu_do_danych_z_kanałów/index.html')
-rw-r--r-- | files/pl/api_dostępu_do_danych_z_kanałów/index.html | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/files/pl/api_dostępu_do_danych_z_kanałów/index.html b/files/pl/api_dostępu_do_danych_z_kanałów/index.html new file mode 100644 index 0000000000..6bcc84bba1 --- /dev/null +++ b/files/pl/api_dostępu_do_danych_z_kanałów/index.html @@ -0,0 +1,170 @@ +--- +title: API dostępu do danych z kanałów +slug: API_dostępu_do_danych_z_kanałów +tags: + - Dodatki + - Rozszerzenia + - Wszystkie_kategorie +--- +<p> </p> +<p><a href="pl/Firefox_2">Firefox 2</a> oraz Thunderbird 2 wprowadzają serię interfejsów, które pozwalają programistom rozszerzeń w łatwy sposób uzyskiwać dostęp do kanałów RSS i Atom.</p> +<h2 id="Interfejsy_kana.C5.82.C3.B3w" name="Interfejsy_kana.C5.82.C3.B3w">Interfejsy kanałów</h2> +<dl> + <dt> + <code><a href="pl/NsIFeed">nsIFeed</a></code></dt> + <dd> + Reprezentuje kanał RSS lub Atom.</dd> + <dt> + <code><a href="pl/NsIFeedContainer">nsIFeedContainer</a></code></dt> + <dd> + Bazowa klasa, z której dziedziczy kilka interfejsów związanych z kanałami.</dd> + <dt> + <code><a href="pl/NsIFeedElementBase">nsIFeedElementBase</a></code></dt> + <dd> + Bazowa klasa, z której dziedziczy kilka interfejsów związanych z kanałami.</dd> + <dt> + <code><a href="pl/NsIFeedEntry">nsIFeedEntry</a></code></dt> + <dd> + Reprezentuje pojedynczy wpis kanału RSS lub Atom.</dd> + <dt> + <code><a href="pl/NsIFeedGenerator">nsIFeedGenerator</a></code></dt> + <dd> + Opisuje software, za pomocą którego wygenerowano kanał RSS lub Atom.</dd> + <dt> + <code><a href="pl/NsIFeedPerson">nsIFeedPerson</a></code></dt> + <dd> + Reprezentuje osobę. Zawiera imię oraz nazwisko osoby, jej adres email oraz adres jej strony domowej.</dd> + <dt> + <code><a href="pl/NsIFeedProcessor">nsIFeedProcessor</a></code></dt> + <dd> + Parsuje kanały RSS oraz Atom.</dd> + <dt> + <code><a href="pl/NsIFeedProgressListener">nsIFeedProgressListener</a></code></dt> + <dd> + Zaimplementowane przez program chcący parsować kanały RSS lub Atom w celu otrzymywania wiadomości podczas procesu parsowania.</dd> + <dt> + <code><a href="pl/NsIFeedResult">nsIFeedResult</a></code></dt> + <dd> + Opisuje rezultat parsowania kanału.</dd> + <dt> + <code><a href="pl/NsIFeedResultListener">nsIFeedResultListener</a></code></dt> + <dd> + Zaimplementowane przez program chcący parsować kanały RSS lub Atom w celu otrzymywania potwierdzenia ukończenia procesu prasowania.</dd> + <dt> + <code><a href="pl/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></dt> + <dd> + Reprezentuje tekst w wątku; zawiera funkcje pozwalające na pobranie danego tekstu wyłącznie jako tekst lub HTML.</dd> + <dt> + <code><a href="pl/NsIScriptableUnescapeHTML">nsIScriptableUnescapeHTML</a></code></dt> + <dd> + Klasa użytkowa przywracająca ciągi znaków HTML.</dd> +</dl> +<h2 id="Przyk.C5.82ad:_Czytanie_kana.C5.82u_z_sieci" name="Przyk.C5.82ad:_Czytanie_kana.C5.82u_z_sieci">Przykład: Czytanie kanału z sieci</h2> +<p>Bardzo łatwo można odczytać oraz parsować kanał. Użyj <code><a href="pl/XMLHttpRequest">XMLHttpRequest</a></code> by pobrać kanał, potem przekaż jego łańcuch do <code><a href="pl/NsIFeedProcessor">nsIFeedProcessor</a></code> w celu przetworzenia.</p> +<p>Pobieranie kanału oraz wysyłanie go do parsowania może zostać zrobione za pomocą kodu podobnego do przedstawionego poniżej:</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 parsing feed."); + } + } + } + + httpRequest = new XMLHttpRequest(); + + httpRequest.open("GET", feedUrl, true); + try { + httpRequest.onload = infoReceived; + httpRequest.send(null); + } + catch(e) { + alert(e); + } + } +</pre> +<p>Interfejs <code><a href="pl/NsIFeedProcessor">nsIFeedProcessor</a></code> pozwala na parsowanie danych kanału z kilku możliwych źródeł; w tym przypadku ładujemy dokument do łańcucha, a następnie parsujemy go za pomocą metody <code>parseFromString()</code>. Można też parsować go z pliku za pomocą <code>parseFromStream()</code>, lub też bezpośrednio z adresu za pomocą <code>parseAsync()</code>.</p> +<p>Właściwe parsowanie kanału dokonywane jest za pomocą metody nazywanej <code>handleResult()</code> na obiekcie <code>FeedTestResultListener</code>. Kod wygląda następująco:</p> +<pre> FeedTestResultListener.prototype = { + handleResult: function(result) { + var feed = result.doc; + + feed.QueryInterface(Components.interfaces.nsIFeed); + + // Otwórz nowe okno + + var win = window.open("", "FeedTest_Window"); + var doc = win.document; + + doc.open(); + + // Zapisz nagłówek HTML oraz tytuł strony + + doc.write("<html><head><title>Feed: " + feed.title.text + "</title></head><body>"); + doc.write("<h1>" + feed.title.text + "</h1><p>"); + + var itemArray = feed.items; + var numItems = itemArray.length; + + // Zapisz informacje zawartą w artykule + + if (!numItems) { + doc.write("<i>No news is good news!</i>"); + } + else { + var i; + var theEntry; + var theUrl; + var info; + + for (i=0; i<numItems; i++) { + theEntry = itemArray.queryElementAt(i, Components.interfaces.nsIFeedEntry); + + if (theEntry) { + theUrl = + doc.write('<b><a href="' + theEntry.link.resolve("") + '">' + theEntry.title.text + '</a></b><br>'); + if (theEntry.summary) { + info = theEntry.summary.text + "<p><hr><p>"; + } + else { + info = theEntry.content.text + "<p><hr><p>"; + } + doc.write("<blockquote>" + info); + doc.write("</blockquote><p>"); + } + } + } + + // Zamknij dokument + + doc.write("</body></html>"); + doc.close(); + } + } +</pre> +<p>Funkcja <code>handleResult()</code> otrzymuje jako argumenty obiekt typu <code><a href="pl/NsIFeedResult">nsIFeedResult</a></code> opisujący kanał, oraz <code>doc</code> typu <code><a href="pl/NsIFeed">nsIFeed</a></code> zawierające wszystkie dane kanału.</p> +<p>W celu uzyskania tytułu kanału należy spojrzeć na właściwość <code>feed.title</code>. Tytuł jest <code><a href="pl/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code> reprezentujący tekst zapisany w rożnych formatach; używając właściwości <code>text</code> uzyskamy tytuł kanału w formacie HTML. Można również użyć metody <code>plainText()</code> by uzyskać kopię jako zwykły tekst.</p> +<p>Następnie można przejrzeć uszeregowanie kanału za pomocą <code>feed.items</code> <code><a href="pl/NsIArray">nsIArray</a></code>. Uszeregowanie to zawiera obiekty <code><a href="pl/NsIFeedEntry">nsIFeedEntry</a></code> opisujące każdy składnik kanału.</p> +<p>Tworzenie zawartości dokumentu następuje poprzez pobranie tytułu, linka, podsumowania oraz zawartości własności poszczególnych składników. Pełny adres linka może zostać pobrany za pomocą metody linka <code>resolve()</code>.</p> +<p>W celu rozpoczęcia pobierania kanału wywołujemy po prostu <code>fetch( + <i> + url</i> + )</code>. Otwierane jest wtedy nowe okno zawierające składniki kanału, których linki pozwalają na bezpośrednie odczytanie artykułu.</p> +<p>Szczegóły dostępu do poszczególnych interfejsów dostępowych kanału można znaleźć klikając w poniższe odnośniki.</p> +<p>{{ languages( { "es": "es/API_de_acceso_a_canales", "fr": "fr/Feed_content_access_API", "ja": "ja/Feed_content_access_API", "en": "en/Feed_content_access_API" } ) }}</p> |