Uporaba v zunanjih aplikacijah
Aplikacije na ObalaNET se povezujejo v enoten centraliziran sistem. Ta ureja prijavljene aplikacije, njihove pravice dostopa, nastavitve, komunikacijo med aplikacijami itd. V naslednjem razdelku bomo razložili kako lahko preko njega dostopamo do svojih podatkov na ObalaNET z zunanjih aplikacij.
Umesnik za zunanjo uporabo se nahaja na http://obala.net/rpc.php. Umesnik podpira dostop preko XML-RPC, SOAP, WEBDAV in JSON-RPC. Prijava v sistem poteka preko HTTPD Avtentikacije. Uporabnik lahko gleda le javne podatke in svoje zasebne.
Vsaka aplikacija podaja v okolje sovoje funkcionalnosti pod imenom nabora funkcionalnosti, ki jih ponuja. Na primer aplikacija za delo s koledarji se v okolje prijavi z umesnikom (interface) „calendars“. Tako vsi klici nanjo se predznačijo z njenim umensikom (primer "calendars/listCalendars" za izpis koledarjev prijavljenega uporabnika).
Klici po aplikacijah
PEAR::XML_RPC
Primer uporabe z PEAR::XML_RPC. Klic pregleda stanje zalog artiklov v trgovini.
require_once 'XML/RPC.php';
$params = array();
$msg = new XML_RPC_Message('shop.listCostStock', $params);
$cli = new XML_RPC_Client('/rpc.php', 'http://obala.net');
// Debug
$cli->setDebug(1);
// Pošljemo zahtevo
$resp = $cli->send($msg);
// Preverimo če je prišlo do napake pri povezavi
if (!$resp) {
echo 'Communication error: ' . $cli->errstr;
exit;
}
if (!$resp->faultCode()) {
// Prikažemo odgovor strežnika
$val = $resp->value();
$data = XML_RPC_decode($val);
var_dump($data);
} else {
// Prikažemo napake
echo 'Fault Code: ' . $resp->faultCode() . "n";
echo 'Fault Reason: ' . $resp->faultString() . "n";
}
PEAR::XML_RPC2
Primer uporabe z PEAR::XML_RPC2 in PHP5. Klic pregleda koledarje, ki jih ima prijavljen uporabnik.
require_once 'XML/RPC2/Client.php';
// Predpona klicane metode
$options = array(
'prefix' => 'calendars.'
);
$client = XML_RPC2_Client::create('http://obala.net/rpc.php', $options);
try {
$result = $client->listCalendars();
print_r($result);
} catch (XML_RPC2_FaultException $e) {
// XMLRPC strežnik je vrnil napako
die('Exception #' . $result->getFaultCode() . ' : ' . $e->getFaultString());
} catch (Exception $e) {
// Ostale napake (v povezavi itd)
die('Exception : ' . $e->getMessage());
}
XML/RPC v Python
username = ""
password = "secret"
protocol = "http"
hostname = "obala.net"
url = "%s://%s:%s@%s/rpc.php" % (protocol, username, password, hostname)
print "Prijavljam se v '%s'..." % url
server = xmlrpclib.ServerProxy(url, verbose=0)
print "Prebiram spisek koledarjev ..."
calendars = server.calendar.listCalendars()
for calendarKey in calendars:
print "Koleder: %s..." % calendarKey
print "Konec."