30 grudnia 2005 (piątek), 22:26:26

Blox.pl API

API Blox.pl

Zachowuje sobie strone API blox.pl aby jej potem nie szukac. Oryginalnie opublikowana byla tu: http://blox.pl/html?page=apiBlox

Strona ta przeznaczona jest dla programistów chcących tworzyć aplikacje, które umożliwiają zarządzanie blogiem w serwisie blox.pl z pominięciem interfejsu www. Program taki może komunikować się z serwisem blox.pl bezpośrednio przy pomocy API Blox.pl. Interfejs serwisu oferuje następującą funkcjonalność:
  • pobieranie listy blogów użytkownika
  • pobieranie listy ostatnich notek z danego bloga
  • tworzenie, edycji i kasowanie notek
  • ładowanie plików binarnych
API Blox.pl zostało stworzone w oparciu o technologię XML-RPC. Pisząc interfejs wzorowaliśmy się na Blogger API oraz MetaWeblog API, metody API Blox.pl są więc w obu przypadkach z nimi kompatybilne.
Z API Blox.pl korzysta między innymi program Bloxer.

Żądania wywołania metod XML-RPC powinny być kierowane na adres URI: http://www.blox.pl/xmlrpc

Obsługiwane przez blox.pl metody z Blogger API:

blogger.newPost - wysyła nową notkę na bloga

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> blogid nazwa bloga, do którego będzie wysłana nowa notka, np. dla bloga o adresie xyz.blox.pl będzie to xyz
  3. <string> username login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
  4. <string> password hasło użytkownika
  5. <string> content treść notki
  6. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <string> identyfikator nowego wpisu lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.editPost - modyfikuje istniejącą notkę

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> postid identyfikator liczbowy modyfikowanej notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
  5. <string> content treść notki
  6. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <boolean> true jeśli notka została pomyślnie zmodyfikowana, false w przeciwnym wypadku lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getPost - pobiera notkę z bloga

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> postid identyfikator liczbowy notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
zwraca notkę jako <struct> tablicę z wartościami przypisanymi do kluczy:
<string> "content" - treść
<string> "userid" - login autora
<string> "postid" - identyfikator notki
<string> "dateCreated" - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getRecentPosts - pobiera ostatnio napisane notki

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> blogid nazwa bloga
  3. <string> username login właściciela/administratora bloga lub autora notek
  4. <string> password hasło użytkownika
  5. <int> numberOfPosts liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "content" - treść
<string> "userid" - login autora
<string> "postid" - identyfikator liczbowy notki
<string> "dateCreated" - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.deletePost - kasuje notkę

parametry wywołania:
  1. <string> appkey ignorowane
  2. <string> postid identyfikator notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
  5. <boolean> publish ignorowane
zwraca <boolean> true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getUsersBlogs - pobiera adresy blogów użytkownika

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> username login właściciela/administratora/użytkownika blogów
  3. <string> password hasło użytkownika
zwraca listę adresów jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "blogid" - identyfikator bloga
<string> "url" - adres url bloga, nie zaimplementowane
<string> "blogName" - nazwa bloga
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getUserInfo - zwraca informacje o użytkowniku, nie zaimplementowana

parametry wywołania:
  1. <string> appkey - ignorowany
  2. <string> username - login każdego użytkownika bloga
  3. <string> password - hasło użytkownika
zwraca <struct> tablicę z wartością przypisaną do klucza:
<string> "userid" - login
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC



Obsługiwane metody z API MetaWebLog:

metaWeblog.newPost - dodaje nową notkę

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
  3. <string> password hasło użytkownika
  4. <struct> content treść notki jako tablica z wartościami przypisanymi do kluczy: <boolean> "flNotOnHomePage" - ignorowany
    <string> "title" - tytuł notki (max 255 znaków)
    <string> "description" - treść notki (max 16KB)
    <array> "categories" - lista nazw kategorii, do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
    <string> "pubDate" - ignorowany
    <string> "guid" - ignorowany
    <string> "author" - login autora notki, musi mieć co najmniej status użytkownika bloga
  5. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <string> identyfikator nowo utworzonej notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.editPost - modyfikuje notkę

parametry wywołania:
  1. <string> postid identyfikator notki
  2. <string> username login właściciela/administratora bloga lub autora notki
  3. <string> password hasło użytkownika
  4. <struct> content treść notki jako tablica z wartościami przypisanymi do kluczy: <boolean> "flNotOnHomePage" - ignorowany
    <string> "title" - tytuł notki (max 255 znaków)
    <string> "description" - treść notki (max 16KB)
    <array> "categories" - lista nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
    <string> "pubDate" - ignorowany
    <string> "guid" - ignorowany
    <string> "author" - login autora notki, musi mieć co najmniej status użytkownika bloga.
  5. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <boolean> true
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.getPost - pobiera notkę

parametry wywołania:
  1. <string> postid identyfikator notki
  2. <string> username login właściciela/administratora bloga lub autora notki
  3. <string> password hasło użytkownika
zwraca <struct> tablicę z wartościami przypisanymi do kluczy: <string> "title" - tytuł notki
<string> "description" - treść notki
<array> "categories" - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
<string> "pubDate" - data publikacji
<string> "guid" - identyfikator notki
<string> "author" - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC



metaWeblog.getRecentPosts - pobiera ostatnio napisane notki

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login właściciela/administratora bloga lub autora notek
  3. <string> password hasło użytkownika
  4. <int> numberOfPosts liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako <array> listę tablic <struct> z wartościami przypisanymi do kluczy:
<string> "title" - tytuł notki
<string> "description" - treść notki
<array> "categories" - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
<string> "pubDate" - data publikacji
<string> "guid" - identyfikator notki
<string> "author" - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.getCategories - pobiera wszystkie kategorie bloga

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login użytkownika bloga
  3. <string> password hasło użytkownika
zwraca listę kategorii jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "htmlUrl" - nazwa kategorii
<string> "description" - tytuł opis kategorii
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.newMediaObject - ładuje do zasobów bloga nowy plik

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login użytkownika bloga
  3. <string> password hasło użytkownika
  4. <struct> file plik jako tablica z wartościami przypisanymi do kluczy:
    <string> "name" - nazwa pliku
    <string> "type" - typ MIME (musi być dozwolony do ładowania na blox.pl)
    <base64> "bits" - zawartość pliku formie binarnej
zwraca <struct> tablicę z wartościami przypisanymi do kluczy:
<string> "url" - adres url załadowanego pliku
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC.

Przykładowy fragent kodu w języku Java, prezentujący sposób użycia metody blogger.getUsersBlogs (wymagany jest pakiet Apache XML-RPC):
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;

...

try
{
  XmlRpcClient client = new XmlRpcClient( "http://www.blox.pl/xmlrpc" );
	
  Vector params = new Vector();
  params.addElement( "" );
  params.addElement( "twoj_login" ); // username
  params.addElement( "XXXXX" );      // haslo

  Vector blogi = (Vector) client.execute( "blogger.getUsersBlogs", params );

  if (blogi != null && !blogi.isEmpty())
  {
    for (Iterator i=blogi.iterator(); i.hasNext(); )
    {
      Hashtable blog = (Hashtable) i.next(); 
      System.out.println(blog.get("blogid")+", "+blog.get("url")+", "+blog.get("blogName"));
    }
  }
} catch (MalformedURLException e) {
  e.printStackTrace();
} catch (XmlRpcException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}


Słowa kluczowe: api, xmlrpc, php, blox

Disclaimers :-) bo w stopce coś wyglądającego mądrze można napisać. Wszystkie powyższe notatki są moim © wymysłem i jako takie związane są ze mną. Ale są też materiały obce, które tu przechowuję lub cytuje ze względu na ich dobrą jakość, na inspiracje, bądź ilustracje prezentowanego lub omawianego tematu. Jeżeli coś narusza czyjeś prawa - proszę o sygnał abym mógł czym prędzej naprawić błąd i naruszeń zaniechać.