API Blox.pl

From BloxWiki

Jump to: navigation, search

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".

Personal tools