BookedRoomsWebservice - PluginMarktplatz

BookedRoomsWebservice - PluginMarktplatz

BookedRoomsWebservice

Fügt einen Webservice (SOAP/XMLRPC) hinzu, der alle in einem anzugebenen Zeitraum gebuchten Räume zurückgibt

Kann als Vorlage benutzt werden, wenn man eigene Webserviceplugins basteln will.

Hier noch eine kurze Anleitung:

Ein Webserviceplugin hat genau eine relevante Methode:
::getWebServices()
die soll ein Array mit Klassennamen liefern, die zusätzliche Webservices enthalten.
Ein Webservice selbst ist eine Klasse, die von AccessControlledService abgeleitet wird. Die eigentlichen aufrufbaren Services sind die in dieser Klasse erstellten öffentlichen <name des service>_action() Methoden. Der erste Parameter ist immer der api key.
Man muss die erstellten Methoden noch beschreiben, das macht man im Konstruktor, indem man die interne Methode ::add_api_method() aufruft. Der wird übergeben:

  1. der Name der Methode (ohne _action)
  2. ein Array mit den Typen der Paramter
  3. ein Wert für den Typ des Rückgabeparameter
  4. optional eine kurze Beschreibung, die auch in die wsdl Datei übernommen wird

Welche Typen es gibt, kann man in
vendor/studip_ws/type.php nachschauen.
Da gibt es die besonderen Typen struct und array, array ist immer ein numerisches eindimensionales Array. Wenn man ein Array zurückgeben will, schreibt man bei add_api_method() nicht 'array', sondern übergibt ein echtes PHP Array mit einem Element, das Element wiederum beschreibt den Typ der enthaltenen Elemente. D.h. wenn man ein
Array von Strings zurückgeben will, schreibt man array('string').
Theoretisch könnte man das auch beliebig verschalten, um mehrdimensionale Arrays zu ermöglichen. Hat noch keiner ausprobiert. Für den Typ 'struct' muss man immer den Namen einer existierenden Klasse angeben. Man kann das von der Klasse Studip_Ws_Struct ableiten, diese Klasse hat eine init() Methode, in der man die Elemente des Structs mit einem Aufruf von ::add_element() beschreiben kann.
Alternativ kann man auch eine beliebige Klasse angeben, es werden dann alle öffentlichen Eigenschaften der Klasse zu struct Elementen vom Typ string. Also für einfache POPOs wie

class mystruct {
public $id; public $name;
}

Wegen eines Fehlers in nusoap.php muss eine solche Struct Klasse IMMER
eine __toString() Methode enthalten!

Alle diese Webservices sind dann über die Endpunkte soap.php, xmlrpc.php und jsonrpc.php aufrufbar. Über soap.php?wsdl gibt es die wsdl Datei. Über xmlrpc.php im Browser aufgerufen, kann man die Services direkt testen (nach Eingabe eines API-KEYs)

Es bietet sich an in vendor/nusoap/nusoap.php in Zeile 74 ein 
$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = 0; 
​zu setzen. Sonst zieht das Ding Unmengen an Speicher.

 

In Benutzung bei

Schlagworte

Webservices

Zum Autor

Releases

Version Min. Stud.IP Version Max. Stud.IP Version Hochgeladen am MD5-Prüfsumme Downloads
2 - - 19.03.2015 17:26 cc03ebae60b34e089dd156ccad1c2742 55

Spenden

Der Download ist kostenlos, aber man kann dem Autor mit einer Spende danken und zukünftige Entwicklungen anregen.

Bewertungen

Bewertung schreiben Plugin abonnieren