CODE STYLE, workflow/engine/methods/services/Rest/

FILES:
CURLMessage.php
FormatedMessage.php
JsonMessage.php
RestMessage.php
SimpleMessage.php
XmlMessage.php
testing.php
This commit is contained in:
jennylee
2012-10-17 13:10:12 -04:00
parent d435f51203
commit 9b55347f30
7 changed files with 286 additions and 263 deletions

View File

@@ -1,149 +1,156 @@
<?php <?php
/** /**
* Abstract class containing the CURL functionality, used to handle GET, POST, PUT and DELETE http methods. * Abstract class containing the CURL functionality, used to handle GET, POST, PUT and DELETE http methods.
* *
* This class uses many different Curl functions, it would be great if this one gorws to allow the use of alll of them. * This class uses many different Curl functions, it would be great if this one gorws to allow the use of alll of them.
* *
* @category Zend * @category Zend
* @package ProcessMaker * @package ProcessMaker
* @subpackage workflow * @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc. * @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@ * @version Release: @2.0.44@
* @since Class available since Release 2.0.44 * @since Class available since Release 2.0.44
*/ */
define('PATH_SEP', '/'); define( 'PATH_SEP', '/' );
define('COLON', ':'); define( 'COLON', ':' );
define('DOT', '.'); define( 'DOT', '.' );
define('PROTOCOL_HTTP', 'http'); define( 'PROTOCOL_HTTP', 'http' );
/** /**
* Abstract class, containing the CURL functionality, used to handle GET, POST, PUT and DELETE http methods. * Abstract class, containing the CURL functionality, used to handle GET, POST, PUT and DELETE http methods.
*/ */
abstract class CURLMessage abstract class CURLMessage
{ {
protected $restServer; // e.g. "http://ralph.pmos.colosa.net/rest/ralph/"; host + technich dir + workspace protected $restServer; // e.g. "http://ralph.pmos.colosa.net/rest/ralph/"; host + technich dir + workspace
protected $content = "Content-Type: application/"; //set the string used to attach next the kind of message to be handle. protected $content = "Content-Type: application/"; //set the string used to attach next the kind of message to be handle.
protected $serviceTechnic = "rest";// name of the current durectory where the rest methods are. protected $serviceTechnic = "rest"; // name of the current durectory where the rest methods are.
protected $server_method; // used to set the name of the remote host and the Rest method to be called. protected $server_method; // used to set the name of the remote host and the Rest method to be called.
protected $type; // contains the type of the message. protected $type; // contains the type of the message.
protected $ch; //curl handle instance. protected $ch; //curl handle instance.
protected $output; // contains the output returned by the curl_exec function. protected $output; // contains the output returned by the curl_exec function.
/**
* Setting the remote host and init the Curl handle options
*/
function __construct()
{
$serverDNS = explode(DOT,$_SERVER['SERVER_NAME']);
$serverDNS = array_reverse($serverDNS);
$workspace = array_pop($serverDNS); //***aware this must contains the workspace name***
$this->restServer = PROTOCOL_HTTP . COLON.PATH_SEP . PATH_SEP;
/**
* Setting the remote host and init the Curl handle options
*/
function __construct ()
{
$serverDNS = explode( DOT, $_SERVER['SERVER_NAME'] );
$serverDNS = array_reverse( $serverDNS );
$workspace = array_pop( $serverDNS ); //***aware this must contains the workspace name***
$this->restServer = PROTOCOL_HTTP . COLON . PATH_SEP . PATH_SEP;
$this->restServer .= $_SERVER['SERVER_NAME'] . PATH_SEP; $this->restServer .= $_SERVER['SERVER_NAME'] . PATH_SEP;
$this->restServer .= $this->serviceTechnic . PATH_SEP . $workspace . PATH_SEP; $this->restServer .= $this->serviceTechnic . PATH_SEP . $workspace . PATH_SEP;
$this->ch = curl_init(); $this->ch = curl_init();
curl_setopt($this->ch,CURLOPT_TIMEOUT, 2); curl_setopt( $this->ch, CURLOPT_TIMEOUT, 2 );
curl_setopt($this->ch,CURLOPT_POST, 1); curl_setopt( $this->ch, CURLOPT_POST, 1 );
curl_setopt($this->ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 1 );
} }
/** /**
* set the message in order to follow the message format * set the message in order to follow the message format
*/ */
abstract protected function format(array $message); abstract protected function format (array $message);
/** /**
* Set properties used in a simpleMessage Class like a set in a URI, or formatted as a JSon msg. * Set properties used in a simpleMessage Class like a set in a URI, or formatted as a JSon msg.
*/ */
abstract protected function setMoreProperties($messageFormated); abstract protected function setMoreProperties ($messageFormated);
/** /**
* Attach the method to the restServer path, set the type of the message, and the message itself. * Attach the method to the restServer path, set the type of the message, and the message itself.
*/ */
protected function setMessageProperties($method,array $message) protected function setMessageProperties ($method, array $message)
{ {
$messageFormated = $this->format($message); $messageFormated = $this->format( $message );
$this->server_method = $this->restServer . $method; $this->server_method = $this->restServer . $method;
$this->setMoreProperties($messageFormated); $this->setMoreProperties( $messageFormated );
} }
/** /**
* Send or execute(curl notation) the message using a rest method * Send or execute(curl notation) the message using a rest method
**/ */
public function send($method,array $message) public function send ($method, array $message)
{ {
self::setMessageProperties($method,$message); self::setMessageProperties( $method, $message );
$this->output = curl_exec($this->ch); $this->output = curl_exec( $this->ch );
return $this->output; return $this->output;
} }
/** /**
* Set the message to GET method type * Set the message to GET method type
*/ */
public function sendGET($method,array $message) public function sendGET ($method, array $message)
{
curl_setopt($this->ch, CURLOPT_HTTPGET,true);
return $this->send($method,$message);
}
/**
* Set the message to POST method type
*/
public function sendPOST($method,array $message)
{ {
curl_setopt($this->ch,CURLOPT_POST,true); curl_setopt( $this->ch, CURLOPT_HTTPGET, true );
return $this->send($method,$message); return $this->send( $method, $message );
} }
/** /**
* Set the message to PUT method type * Set the message to POST method type
*/ */
public function sendPUT($method,array $message) public function sendPOST ($method, array $message)
{ {
curl_setopt($this->ch,CURLOPT_PUT,true); curl_setopt( $this->ch, CURLOPT_POST, true );
return $this->send($method,$message); return $this->send( $method, $message );
} }
/** /**
* Set the message to DELETE method type * Set the message to PUT method type
*/ */
public function sendDELETE($method,array $message) public function sendPUT ($method, array $message)
{ {
curl_setopt($this->ch,CURLOPT_CUSTOMREQUEST,"DELETE"); curl_setopt( $this->ch, CURLOPT_PUT, true );
return $this->send($method,$message); return $this->send( $method, $message );
} }
/** /**
* Display all the data that the response could got. * Set the message to DELETE method type
*/ */
public function displayResponse() public function sendDELETE ($method, array $message)
{ {
$error = curl_error($this->ch); curl_setopt( $this->ch, CURLOPT_CUSTOMREQUEST, "DELETE" );
$result = array( 'header' => '', return $this->send( $method, $message );
'body' => '', }
'curl_error' => '',
'http_code' => '', /**
'last_url' => ''); * Display all the data that the response could got.
if ($error != ""){ */
public function displayResponse ()
{
$error = curl_error( $this->ch );
$result = array ('header' => '','body' => '','curl_error' => '','http_code' => '','last_url' => ''
);
if ($error != "") {
$result['curl_error'] = $error; $result['curl_error'] = $error;
return $result; return $result;
} }
$response = $this->output; $response = $this->output;
$header_size = curl_getinfo($this->ch,CURLINFO_HEADER_SIZE); $header_size = curl_getinfo( $this->ch, CURLINFO_HEADER_SIZE );
$result['header'] = substr($response,0,$header_size); $result['header'] = substr( $response, 0, $header_size );
$result['body'] = substr($response,$header_size); $result['body'] = substr( $response, $header_size );
$result['http_code'] = curl_getinfo($this -> ch,CURLINFO_HTTP_CODE); $result['http_code'] = curl_getinfo( $this->ch, CURLINFO_HTTP_CODE );
$result['last_url'] = curl_getinfo($this -> ch,CURLINFO_EFFECTIVE_URL); $result['last_url'] = curl_getinfo( $this->ch, CURLINFO_EFFECTIVE_URL );
echo $this->type." Response: ".$response."<BR>"; echo $this->type . " Response: " . $response . "<BR>";
foreach($result as $index => $data) foreach ($result as $index => $data) {
{ if ($data != "") {
if($data != ""){
echo $index . "=" . $data . "<BR>"; echo $index . "=" . $data . "<BR>";
} }
} }
echo "<BR>"; echo "<BR>";
} }
/** /**
* Close the Curl session using the Curl Handle set by curl_init() function. * Close the Curl session using the Curl Handle set by curl_init() function.
*/ */
public function close() public function close ()
{ {
curl_close($this->ch); curl_close( $this->ch );
} }
} }
?>

View File

@@ -1,46 +1,50 @@
<?php <?php
/** /**
* Class defined to set all the configuration that XML, Json or other needs. * Class defined to set all the configuration that XML, Json or other needs.
* *
* *
* @category Zend * @category Zend
* @package ProcessMaker * @package ProcessMaker
* @subpackage workflow * @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc. * @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@ * @version Release: @2.0.44@
* @since Class available since Release 2.0.44 * @since Class available since Release 2.0.44
*/ */
require_once("CURLMessage.php"); require_once ("CURLMessage.php");
/** /**
* Class defined to set all the configuration that XML, Json or other needs. * Class defined to set all the configuration that XML, Json or other needs.
*/ */
class FormatedMessage extends CURLMessage class FormatedMessage extends CURLMessage
{ {
public function FormatedMessage()
public function FormatedMessage ()
{ {
parent::__construct(); parent::__construct();
} }
/** /**
* Set the message in order to follow the message format, empty caused this class should not be instanced * Set the message in order to follow the message format, empty caused this class should not be instanced
*/ */
protected function format(array $message) protected function format (array $message)
{ {
} }
/** /**
* Setting CURL Url, Content and the message to be send * Setting CURL Url, Content and the message to be send
*/ */
protected function setMoreProperties($messageFormated) protected function setMoreProperties ($messageFormated)
{ {
//Please, remove this comment, is only for looging proposes. //Please, remove this comment, is only for looging proposes.
// //
echo "Request: " . $this->server_method . PATH_SEP . $messageFormated . " <br>"; echo "Request: " . $this->server_method . PATH_SEP . $messageFormated . " <br>";
// //
curl_setopt($this->ch,CURLOPT_URL,$this->server_method); curl_setopt( $this->ch, CURLOPT_URL, $this->server_method );
$contentSelected = $this->content . $this->type; $contentSelected = $this->content . $this->type;
curl_setopt($this->ch,CURLOPT_HTTPHEADER,array($contentSelected)); curl_setopt( $this->ch, CURLOPT_HTTPHEADER, array ($contentSelected
curl_setopt($this->ch,CURLOPT_POSTFIELDS,$messageFormated); ) );
curl_setopt( $this->ch, CURLOPT_POSTFIELDS, $messageFormated );
} }
} }
?>

View File

@@ -1,43 +1,45 @@
<?php <?php
/**
* Class defined to be instanced and handle Json messages.
*
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once("FormatedMessage.php");
/** /**
* Class defined to be instanced and handle Json messages * Class defined to be instanced and handle Json messages.
*/ *
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once ("FormatedMessage.php");
/**
* Class defined to be instanced and handle Json messages
*/
class JsonMessage extends FormatedMessage class JsonMessage extends FormatedMessage
{ {
/** /**
* Call the parent Curl initialization and set the type of the message * Call the parent Curl initialization and set the type of the message
*/ */
public function JsonMessage() public function JsonMessage ()
{ {
parent::__construct(); parent::__construct();
$this->type = "json"; $this->type = "json";
} }
/** /**
* Format the array parameter to a json format. * Format the array parameter to a json format.
*/ */
protected function format(array $message) protected function format (array $message)
{ {
if (empty($message)){ if (empty( $message )) {
return ; return;
} }
if (is_array($message)){ if (is_array( $message )) {
$jsonMessage = json_encode( $message); $jsonMessage = json_encode( $message );
} }
return $jsonMessage; return $jsonMessage;
} }
} }
?>

View File

@@ -1,40 +1,42 @@
<?php <?php
/**
* Class defined to be instanced and handle rest single parameters.
*
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once("SimpleMessage.php");
/** /**
* Class defined to be instanced and handle rest single parameters * Class defined to be instanced and handle rest single parameters.
*/ *
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once ("SimpleMessage.php");
/**
* Class defined to be instanced and handle rest single parameters
*/
class RestMessage extends SimpleMessage class RestMessage extends SimpleMessage
{ {
/** /**
* Call the parent Curl initialization and set the type of the message * Call the parent Curl initialization and set the type of the message
*/ */
public function RestMessage() public function RestMessage ()
{ {
parent::__construct(); parent::__construct();
$this->type = "rest"; $this->type = "rest";
} }
/** /**
* Format the array parameter to a single rest line format separed by '/'. * Format the array parameter to a single rest line format separed by '/'.
*/ */
protected function format(array $message) protected function format (array $message)
{ {
$rest = ""; $rest = "";
if (!empty($message)){ if (! empty( $message )) {
if (is_array($message)){ if (is_array( $message )) {
foreach($message as $index => $data) foreach ($message as $index => $data) {
{
$rest .= "/" . $data; $rest .= "/" . $data;
} }
$rest .= "/"; $rest .= "/";
@@ -44,4 +46,3 @@ class RestMessage extends SimpleMessage
} }
} }
?>

View File

@@ -1,43 +1,46 @@
<?php <?php
/** /**
* Class defined to set enough curl configuration. * Class defined to set enough curl configuration.
* *
* *
* @category Zend * @category Zend
* @package ProcessMaker * @package ProcessMaker
* @subpackage workflow * @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc. * @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@ * @version Release: @2.0.44@
* @since Class available since Release 2.0.44 * @since Class available since Release 2.0.44
*/ */
require_once("CURLMessage.php"); require_once ("CURLMessage.php");
/** /**
* Class defined to set enough curl configuration * Class defined to set enough curl configuration
*/ */
class SimpleMessage extends CURLMessage class SimpleMessage extends CURLMessage
{ {
public function SimpleMessage()
{ public function SimpleMessage ()
{
parent::__construct(); parent::__construct();
} }
/**
* Set the message in order to follow the message format, empty caused this class should not be instanced /**
*/ * Set the message in order to follow the message format, empty caused this class should not be instanced
protected function format(array $message) */
{ protected function format (array $message)
} {
/** }
* Setting CURL Url, enough to attach a message.
*/ /**
protected function setMoreProperties($messageFormated) * Setting CURL Url, enough to attach a message.
{ */
//Please, remove this comment, is only for looging proposes. protected function setMoreProperties ($messageFormated)
// {
echo "Request: " . $this->server_method . PATH_SEP . $messageFormated . " <br>"; //Please, remove this comment, is only for looging proposes.
// //
curl_setopt($this->ch,CURLOPT_URL,$this->server_method.$messageFormated); echo "Request: " . $this->server_method . PATH_SEP . $messageFormated . " <br>";
} //
} curl_setopt( $this->ch, CURLOPT_URL, $this->server_method . $messageFormated );
?> }
}

View File

@@ -1,42 +1,45 @@
<?php <?php
/**
* Class defined to be instanced and handle XML format messages.
*
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once("FormatedMessage.php");
/** /**
* Class defined to be instanced and handle XML format messages. * Class defined to be instanced and handle XML format messages.
*/ *
*
* @category Zend
* @package ProcessMaker
* @subpackage workflow
* @copyright Copyright (c) ProcessMaker Colosa Inc.
* @version Release: @2.0.44@
* @since Class available since Release 2.0.44
*/
require_once ("FormatedMessage.php");
/**
* Class defined to be instanced and handle XML format messages.
*/
class XmlMessage extends FormatedMessage class XmlMessage extends FormatedMessage
{ {
/** /**
* Call the parent Curl initialization and set the type of the message * Call the parent Curl initialization and set the type of the message
*/ */
public function XmlMessage() public function XmlMessage ()
{ {
parent::__construct(); parent::__construct();
$this->type = "xml"; $this->type = "xml";
} }
/** /**
* Format the array parameter to a xml valid format. TODO: Need to find out a better way to do it. * Format the array parameter to a xml valid format.
*/ * TODO: Need to find out a better way to do it.
protected function format(array $message) */
protected function format (array $message)
{ {
if (empty($message)){ if (empty( $message )) {
return ; return;
} }
if (is_array($message)){ if (is_array( $message )) {
$xml = "<?xml version='1.0'?><request>"; $xml = "<?xml version='1.0'?><request>";
foreach($message as $index => $data) foreach ($message as $index => $data) {
{
$xml .= "<" . $index . ">" . $data . "</" . $index . ">"; $xml .= "<" . $index . ">" . $data . "</" . $index . ">";
} }
$xml .= "</request>"; $xml .= "</request>";
@@ -45,4 +48,3 @@ class XmlMessage extends FormatedMessage
} }
} }
?>

View File

@@ -1,37 +1,41 @@
<?php <?php
require_once("JsonMessage.php"); require_once ("JsonMessage.php");
require_once("XmlMessage.php"); require_once ("XmlMessage.php");
require_once("RestMessage.php"); require_once ("RestMessage.php");
$msg = array( 'user'=>'admin' , 'password'=>'admin'); $msg = array ('user' => 'admin','password' => 'admin'
);
$method = "login"; $method = "login";
$jsonm = new JsonMessage(); $jsonm = new JsonMessage();
$jsonm->send($method,$msg); $jsonm->send( $method, $msg );
$jsonm->displayResponse(); $jsonm->displayResponse();
$xmlm = new XmlMessage(); $xmlm = new XmlMessage();
$xmlm->send($method, $msg); $xmlm->send( $method, $msg );
$xmlm->displayResponse(); $xmlm->displayResponse();
$msg = array( "LABEL", "LOGIN", "en"); $msg = array ("LABEL","LOGIN","en"
);
$table = "TRANSLATION"; $table = "TRANSLATION";
$rest = new RestMessage(); $rest = new RestMessage();
$rest->sendGET($table,$msg); $rest->sendGET( $table, $msg );
$rest->displayResponse(); $rest->displayResponse();
$msg = array( "HOUSE", "PUSHIN", "en", "sample", "2012-06-06" ); $msg = array ("HOUSE","PUSHIN","en","sample","2012-06-06"
$rest->sendPOST($table,$msg); );
$rest->sendPOST( $table, $msg );
$rest->displayResponse(); $rest->displayResponse();
$msg = array( "HOUSE", "PUSHIN", "en", "samplemod", "2012-07-06" ); $msg = array ("HOUSE","PUSHIN","en","samplemod","2012-07-06"
$rest->sendPUT($table,$msg); );
$rest->sendPUT( $table, $msg );
$rest->displayResponse(); $rest->displayResponse();
$msg = array( "HOUSE", "PUSHIN", "en"); $msg = array ("HOUSE","PUSHIN","en"
$rest->sendDELETE($table,$msg); );
$rest->sendDELETE( $table, $msg );
$rest->displayResponse(); $rest->displayResponse();
?>