API Blox.pl
From BloxWiki
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.
Spis treści |
Oferowane funkcjonalności
- pobieranie listy blogów użytkownika
- pobieranie listy ostatnich notek z danego bloga
- tworzenie, edycji i kasowanie notek
- ładowanie plików binarnych
Kompatybilność
API Blox.pl zostało stworzone w oparciu o technologię XML-RPC. Pisząc interfejs wzorowaliśmy się na Blogger API, MetaWeblog API oraz MovableType 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:
- appkey - ignorowany
- blogid - nazwa bloga, do którego będzie wysłana nowa notka, np. dla bloga o adresie xyz.blox.pl będzie to xyz (wycofywane) lub numer bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- content - treść notki
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca identyfikator nowego wpisu lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.editPost
modyfikuje istniejącą notkę
parametry wywołania:
- appkey - ignorowany
- postid - identyfikator liczbowy modyfikowanej notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- content - treść notki
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca 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:
- appkey - ignorowany
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
zwraca notkę jako tablicę z wartościami przypisanymi do kluczy:
- content - treść
- userid - login autora
- postid - identyfikator liczbowy notki
- dateCreated - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getRecentPosts
pobiera ostatnio napisane notki
parametry wywołania:
- appkey - ignorowany
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
- numberOfPosts - liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- content - treść
- userid - login autora
- postid - identyfikator liczbowy notki
- dateCreated - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.deletePost
kasuje notkę
parametry wywołania:
- appkey - ignorowany
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- publish - ignorowane
zwraca true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getUsersBlogs
pobiera adresy blogów użytkownika
parametry wywołania:
- appkey - ignorowany
- username - login właściciela/administratora/użytkownika blogów
- password - hasło użytkownika
zwraca listę adresów jako listę tablic z wartościami przypisanymi do kluczy:
- blogid - identyfikator bloga
- url - adres url bloga
- blogName - nazwa bloga
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getUserInfo
zwraca informacje o użytkowniku, częściowo zaimplementowana
parametry wywołania:
- appkey - ignorowany
- username - login każdego użytkownika bloga
- password - hasło użytkownika
zwraca tablicę z wartością przypisaną do klucza:
- 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:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- content - treść notki jako tablica z wartościami przypisanymi do kluczy:
- flNotOnHomePage - ignorowany
- title - tytuł notki (max 255 znaków)
- lead - wstęp do notki (max 2500 znaków)
- description - treść notki (max 16KB)
- 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
- pubDate - ignorowany, zawsze ustawiana jest bieżąca data
- guid - ignorowany
- author - ignorowany, autorem jest zawsze użytkownik podany w username
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca identyfikator nowo utworzonej notki lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.editPost
modyfikuje notkę
parametry wywołania:
- postid - identyfikator notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- content - treść notki jako tablica z wartościami przypisanymi do kluczy:
- flNotOnHomePage - ignorowany
- title - tytuł notki (max 255 znaków)
- lead - wstęp do notki (max 2500 znaków)
- description - treść notki (max 16KB)
- 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
- pubDate - ignorowany, zawsze ustawiana jest bieżąca data
- guid - ignorowany
- author - ignorowany, autorem jest zawsze użytkownik podany w username
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.getPost
pobiera notkę
parametry wywołania:
- postid - identyfikator notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
zwraca tablicę z wartościami przypisanymi do kluczy:
- title - tytuł notki
- lead - wstęp do notki
- description - treść notki
- categories - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
- pubDate - data publikacji
- guid - identyfikator notki
- author - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.getRecentPosts
pobiera ostatnio napisane notki
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
- numberOfPosts - liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- title - tytuł notki
- description - treść notki
- categories - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
- pubDate - data publikacji
- guid - identyfikator notki
- author - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.getCategories
pobiera wszystkie kategorie bloga
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
zwraca listę kategorii jako listę tablic z wartościami przypisanymi do kluczy:
- htmlUrl - nazwa kategorii
- description - 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:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login użytkownika bloga
- password - hasło użytkownika
- file - plik jako tablica z wartościami przypisanymi do kluczy:
- name - nazwa pliku
- type - typ MIME (musi być dozwolony do ładowania na Blox.pl)
- bits - zawartość pliku formie binarnej
zwraca tablicę z wartościami przypisanymi do kluczy:
- url - adres url załadowanego pliku
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC.
Obsługiwane metody z API Movable Type
mt.getRecentPostTitles
zwraca listę tytułów notek
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- numberOfPosts - liczba notek, które serwer ma zwrócić, w kolejności od ostatnio dodanej. Dla wartości -1 zostaną zwrócone tytuły wszystkich notek bloga.
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- dateCreated - data utworzenia notki
- userid - login autora
- postid - identyfikator liczbowy notki
- title - tytuł notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
Przykładowy kod
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();
}
Przykładowy kod
Przykład wysłania zapytania do XMLRPC przy użyciu cURL (Client URL) z lini poleceń:
# curl -H "text/xml" --data-binary @/plik.xml http://www.blox.pl/xmlrpc
Przykład w PHP: metaWeblog.newPost
RPC.php możemy wziąć z paczki PEAR/XML_RPC
require_once("RPC.php");
$post_payload['title']=new XML_RPC_Value($title, 'string');
$post_payload['description']=new XML_RPC_Value(stripslashes($post), 'string');
$params = array( new XML_RPC_Value($blog_id, 'string'),
new XML_RPC_Value($this->login, 'string'),
new XML_RPC_Value($this->password, 'string'),
new XML_RPC_Value($post_payload, 'struct'),
new XML_RPC_Value('1','boolean')
);
$msg = new XML_RPC_Message('metaWeblog.newPost', $params);
$msg->setSendEncoding('ISO-8859-2'); //fix dla krzaczkow;)
$cli = new XML_RPC_Client('/xmlrpc', 'blox.pl');
$resp = $cli->send($msg);
if(!$resp) {
echo 'communication error <strong>' . $cli->errstr ."</strong>";
exit;
}
if(!$resp->faultCode()) {
$val = $resp->value();
$data = XML_RPC_decode($val);
if($data > 0) {
echo 'post id: ' . $data;
}else{
echo 'fatal error;)';
}
}else{
echo 'Fault Code: ' . $resp->faultCode() . "<br/>";
echo 'Fault Reason: ' . $resp->faultString() . "<br/>";
}
Powyższy kod został znaleziony w internecie (google <3) i lekko poprawiony do realiów blox.pl, pytania kierować pod michal86@gmail.com
Zmiany w API
12.01.2010 - do metod metaWeblog.newPost, metaWeblog.editPost oraz metaWeblog.newPost została dodana obsługa pola "lead".

