Webservices
connecting Joomla!
   with the rest




         Herman Peeren   June 1st 2010
Webservice:
•	   data-exchange with a webserver
•	   often in XML-format
Alternative: ODBC
directly calling the database from client-application




“normal”, indirect call, e.g. via   direct call to database,
webpage or webservice:              ODBC:
now: Webservices
Joomla!
as a
system
on its own
connecting
Joomla!
connecting
Joomla!
connecting
Joomla! to:
•	   desktop applications
     (RIAs), Java, Flex,
     Delphi, VS, Titanium,
     MS Office, etc.

•	   other webapplications:
     as a server or client

•	   browser: Ajax, Flash

•	   any other computer
     program...
Example uses:
•connecting to multiple Joomla!-
 sites for backup and upgrading.
 (e.g.: Akeeba Remote)

•using external services (e.g.
 Google Docs, Amazon S3, etc.)

•bridges with other applications
 (e.g. MageBridge)
Protocols:
•your own...
•a binary protocol like AMF
•using some XML or JSON (Ajax)
•one way XML: feed (Atom/RSS)

•XML-RPC
           }
               when we talk about
               webservices
•SOAP          we mostly talk about
•REST          those 3 ways
Remote Procedure Calls
(XML-RPC and SOAP)

•call a method on the server
•DO something (procedure, verb)

vs REST
•get/put/post/delete a resource
 on the server
•resource (object, noun)
XML-RPC
•define I/O types
•phpxmlrpc-library
•in Joomla!: as a plugin...
•better: use MVC
•changed in J! 1.6
Webservice and MVC
•model: is the “heart” of application
 (use same model for webservice)
•controller decides what to do
 based on the input
•view: renders the output
XML-RPC in Joomla! 1.6
•no plugin anymore
•new JController
 (might use a strategy pattern?)
•controllername.xmlrpc.php
•idem: controllername.json.php
•index.php?....&protocol=xmlrpc
•http://docs.joomla.org/Xml-rpc
SOAP
•evolved from XML-RPC
•heavily used in .NET
•meta-data:
 WSDL and SOAP-envellope
•SOAP-header:
 a.o. for authentication
•WSDL:
 description in XML-format
SOAP-envellope:
WSDL:
•description of a webservice
•automatic code generation!
•easy to use in e.g. Delphi, Flex, etc.
sample
SOAP-calls
and WSDL
importing WSDL in Delphi 2010:
importing WSDL in Flex Builder 3:
SOAP in Joomla!,
some possibilities:
•JMSOAP and com_connector: J!1.0
 (vBulletin-connection)
•VM SOA: SOAP for VirtueMart
•other PHP libraries and Frameworks:
 NuSoap, PearSoap, Zend, PHP5
 SOAP module... $server = new soap_server;
                  require_once(“nusoap.php”);


•JSOAP coming soon!
 (based on PHP5-SOAP)
REST
•“representational state transfer”
•architecture, not a protocol
•linking to recourses, not methods
•resource = object + URI
•stateless communication
•uniform interface (CRUD)
•using HTTP-headers and methods
REST in Nooku Framework:
•KControllerBread + KRequest works
 out of the box!
•authentication and http status messa-
 ges not yet 100% (planned for 0.9)

Joomla! RESTful thoughts:
•www.alltogetherasawhole.org/profiles/
 blogs/restful-api-for-joomla
Authentication/Authorization
•with XML/RPC credentials are para-
 meters in the remote procedure call.

•with SOAP credentials are in the
 SOAP-header.

•with REST the credentials are in
 HTTP-headers.
SSL or other encrypting
•SSL (https://) can be used to encrypt
 the credentials (and data)

•or you can define encryption of cre-
 dentials (and data) yourself:
   - basic (base64: no real encryption)
   - digest
   - WSSE, OAuth, your own variation
Get Joomla! connected
•providing standard, easy to use con-
 nections is essential for further deve-
 lopment of Joomla!

•let’s provide XML/RPC, SOAP and
 REST within the MVC framework in a
 uniform way
 (Zend has it all, why not we too?)
let’s
connect
Joomla!
let’s
connect
Joomla!
Questions?



Contact info:
Herman Peeren
herman@yepr.nl

Webservices: connecting Joomla! with other programs.