easyLink V3 XML-RPC Schnittstelle individuell erweitern

Für einen Kundenauftrag sollen wir die XML-RPC Schnittstelle in easyLink V3 um zusätzliche Funktionen erweitern und da die Realisierung dieses Wunsches durch den strukturierten Aufbau der Software wirklich sehr einfach ist, möchte ich euch heute in diesem Tutorial mal zeigen, wie leicht man seine eigene easyLink V3 XML-RPC Schnittstelle mit individuellen Funktionen aufbauen kann.

Was man mit einer solchen Schnittstelle alles anstellen kann, hatte ich ja vor einiger Zeit schon einmal beschrieben, doch XML-RPC ist nicht nur für mobile oder Desktop-Anwendungen höchst interessant, sondern Ihr könnt mit Hilfe dieses Standards beispielweise auch Daten mit anderen Webseiten austauschen.

So ist es z.B. denkbar, dass Partnerseiten gegen eine Gebühr bestimmte Inhalte bei euch Abfragen oder Ihr ermöglicht den diversen Verzeichnisdiensten gegen eine monatliche Pauschale eurer Verzeichnis direkt mit neuen Einträgen zu befüllen. Die Möglichkeiten sind hier ziemlich vielfältig und wenn Ihr Interesse daran habt, dann unterstützen wir euch gern bei der Umsetzung eurer kreativen Geschäftsideen.

Von Haus aus bringt easyLink zwar einen XMLRPC-Server mit, aber dieser ist allein auf die Bedürfnisse der Software selbst ausgelegt und somit nutzt euch das ganze nicht besonders viel. Wenn Ihr jetzt beispielsweise die Daten eines Eintrages über die Schnittstelle abfragen möchtet, dann muss man dazu den internen Server erweitern.

Sprich…es ist notwendig zum einen die Funktion zu schreiben, die uns die angeforderten Daten bereitstellt und zum anderen müssen wir unserem Server sagen, wo er diese Funktion oder besser gesagt diese Methode überhaupt finden kann.

Der XML-RPC-SERVER

Damit wir nicht in einen Konflikt mit den easyLink Standard-Methoden kommen, legen wir unseren Server in einer extra Datei ab. In unserem Beispiel nenne ich diese Datei mal myXMLRPC.php und ich speichere die Datei im Rootverzeichnis der Software.

Als nächstes erweitern wir den Standard-Server von easyLink

/* Den absoluten Serverpfad ermitteln */
define('ABSPATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);

/* XMLRPC Status definieren    */
define('XMLRPC_REQUEST', true);

/* Initialisieren */
require_once(ABSPATH . 'lib/config.php');
require_once(ABSPATH . 'lib/init.php');
require_once(ABSPATH . 'lib/xml/XMLRPCServer.class.php');

/**
  * Individueller XMPRPC Server für easyLink
  */
class MY_XMLRPC_Server extends XMLRPCServer {
}

/* Server starten */
$Server = new MY_XMLRPC_Server();

Diese paar Zeilen Code würden zwar bereits schon vollkommen ausreichen, aber unser Server würde in diesem Fall nur über die Funktionen verfügen, die die Software bereits von Haus aus mit sich bringt. Wir müssen unserer Klasse nun also noch die Bezeichnungen der neuen Methoden mitteilen:

/**
  * Erstellt ein neues MY_XMLRPC_Server Object
  */
public function __construct() {

    $methods = array(
        'sayHello' => 'this:sayHello',
    );

    parent::__construct($methods);
}

Nun was passiert hier genau? Wir erstellen uns zunächst ein einfaches Array, dessen Werte nach dem Schema Aufruf (Extern) : Aufruf (Intern) aufgebaut sind. Wenn also jemand die Schnittstelle in unserem easyLink anspricht und dort die Methode sayHello starten möchte, dann soll unser Server intern die Methode this:sayHello starten.

Es bietet sich zur besseren Übersicht natürlich immer an, die Methoden Intern und Extern möglichst ähnlich zu benennen, dann verliert man nicht so schnell den Überblick.

Wichtig ist in diesem Zusammenhang nur, dass Ihr nicht das this: vor der Bezeichnung der internen Methode vergesst, denn genau daran erkennt der Server wo er nach den Daten bzw. nach den Methoden suchen muss.

Und jetzt brauchen wir nur noch die besagte Methode: sayHello

/**
  * Demo - Methode um die XMLRPC Schnittstelle zu testen
  */
protected function sayHello($args) {
    return 'Hello!';
}

Das war es jetzt auch schon! Damit haben wir jetzt einen individuellen XML-RPC Server für easyLink V3 erstellt. Natürlich macht der Server momentan nix anderes als uns einen String mit dem Inhalt „Hello!“ zu liefern, aber dieses Tutorial sollte euch ja auch nur die grundsätzliche Vorgehensweise verdeutlichen.

Ich hoffe, dass euch dieser Beitrag vielleicht auf die ein oder andere Idee gebracht hat und vielleicht sehen wir in Zukunft ja den ein oder anderen der sein Verzeichnis um eine eigene Schnittstelle erweitert hat. Damit Ihr nicht alles abtippen müsst, habe ich euch den Code mal hier zum Download bereitgestellt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.