aboutsummaryrefslogtreecommitdiff
path: root/files/pl/api_dostępu_do_danych_z_kanałów/index.html
diff options
context:
space:
mode:
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.html170
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("&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;
+
+ // Zapisz informacje zawartą w artykule
+
+ if (!numItems) {
+ doc.write("&lt;i&gt;No news is good news!&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;");
+ }
+ }
+ }
+
+ // Zamknij dokument
+
+ doc.write("&lt;/body&gt;&lt;/html&gt;");
+ 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>