diff --git a/workflow/engine/methods/services/Rest/CRUD.java b/workflow/engine/methods/services/Rest/CRUD.java new file mode 100644 index 000000000..c9dea78f0 --- /dev/null +++ b/workflow/engine/methods/services/Rest/CRUD.java @@ -0,0 +1,200 @@ +//Archivo HolaMundo.java + +// Main class to sent differen kind of messages +import org.apache.http.impl.client.DefaultHttpClient; + +// Enter CRUD memebers +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpDelete; + +// Used to set JSON or XML messages request +import org.apache.http.entity.StringEntity; + +// Needed for response goal +import org.apache.http.HttpResponse; +import org.apache.http.HttpEntity; +import org.apache.http.util.EntityUtils; + + +public class CRUD +{ + private static void PostSample() + { + System.out.println("POST: Enter login params\n"); + + String loginParamsXML = "\n" + +"\n" + +"admin\n" + +"admin\n" + +""; + String URI = "http://ralph.pmos.colosa.net/rest/ralph/login/"; + + System.out.println( "Request: "+URI + "\n"+ loginParamsXML + "\n"); + + DefaultHttpClient httpClient = new DefaultHttpClient(); + HttpPost postRequest = new HttpPost(URI); + try + { + StringEntity input = new StringEntity( loginParamsXML); + input.setContentType("application/xml"); + postRequest.setEntity(input); + HttpResponse httpResponse = httpClient.execute(postRequest); + + HttpEntity responseEntity = httpResponse.getEntity(); + if( responseEntity != null) + { + String response = new String(); + response = EntityUtils.toString( responseEntity); + System.out.println( "Response: " + response + "\n"); + } + } + catch( java.io.IOException x) + { + throw new RuntimeException("I/O error" + x.toString()); + } + } + + private static void GetSample() + { + System.out.println("GET: Display TRANSLATION table row\n"); + + String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/LABEL/LOGIN/en/"; + System.out.println( "Request: " + URI + "\n"); + + DefaultHttpClient httpClient = new DefaultHttpClient(); + HttpGet getRequest = new HttpGet(URI); + try + { + HttpResponse httpResponse = httpClient.execute(getRequest); + + HttpEntity responseEntity = httpResponse.getEntity(); + if( responseEntity != null) + { + String response = new String(); + response = EntityUtils.toString( responseEntity); + System.out.println( "Response: " + response + "\n"); + } + } + catch( java.io.IOException x) + { + throw new RuntimeException("I/O error" + x.toString()); + } + } + + private static void AnotherPostSample() + { + System.out.println("POST: Insert new row in TRANLATION\n"); + + String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/"; + String newRow = "BUTTON/ESCAPE/en/sample/2012-05-05/"; + System.out.println( "Request: " + URI + " new row: " + newRow + "\n"); + URI = URI + newRow; + + DefaultHttpClient httpClient = new DefaultHttpClient(); + HttpPost postRequest = new HttpPost(URI); + try + { + HttpResponse httpResponse = httpClient.execute(postRequest); + + HttpEntity responseEntity = httpResponse.getEntity(); + if( responseEntity != null) + { + String response = new String(); + if(response.isEmpty()) + { + System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n"); + return; + } + response = EntityUtils.toString( responseEntity); + System.out.println( "Response: " + response + "\n"); + } + } + catch( java.io.IOException x) + { + throw new RuntimeException("I/O error" + x.toString()); + } + } + + private static void PutSample() + { + System.out.println("POST: Update a row in TRANLATION\n"); + + String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/"; + String index = "BUTTON/ESCAPE/en/"; + String updateData = "changesample/2011-07-06/"; + + System.out.println( "Request: " + URI + " index: " + index + " updateData: " + updateData + "\n"); + URI = URI + index + updateData; + + DefaultHttpClient httpClient = new DefaultHttpClient(); + HttpPut putRequest = new HttpPut(URI); + try + { + HttpResponse httpResponse = httpClient.execute(putRequest); + + HttpEntity responseEntity = httpResponse.getEntity(); + if( responseEntity != null) + { + String response = new String(); + if(response.isEmpty()) + { + System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n"); + return; + } + response = EntityUtils.toString( responseEntity); + System.out.println( "Response: " + response + "\n"); + } + } + catch( java.io.IOException x) + { + throw new RuntimeException("I/O error" + x.toString()); + } + } + + private static void DeleteSample() + { + System.out.println("DELETE: Remove a row in TRANLATION\n"); + + String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/"; + String index = "BUTTON/ESCAPE/en/"; + + System.out.println( "Request: " + URI + "index:" + index + "\n"); + URI = URI + index; + + DefaultHttpClient httpClient = new DefaultHttpClient(); + HttpDelete deleteRequest = new HttpDelete(URI); + try + { + HttpResponse httpResponse = httpClient.execute(deleteRequest); + + HttpEntity responseEntity = httpResponse.getEntity(); + if( responseEntity != null) + { + String response = new String(); + if(response.isEmpty()) + { + System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n"); + return; + } + response = EntityUtils.toString( responseEntity); + System.out.println( "Response: " + response + "\n"); + } + } + catch( java.io.IOException x) + { + throw new RuntimeException("I/O error" + x.toString()); + } + } + + public static void main(String args[]) + { + System.out.println("CRUD sample."); + PostSample(); + GetSample(); + AnotherPostSample(); + PutSample(); + DeleteSample(); + } +} \ No newline at end of file diff --git a/workflow/engine/methods/services/Rest/CURLMessage.php b/workflow/engine/methods/services/Rest/CURLMessage.php new file mode 100644 index 000000000..7ca2f992a --- /dev/null +++ b/workflow/engine/methods/services/Rest/CURLMessage.php @@ -0,0 +1,116 @@ +restServer = PROTOCOL_HTTP.COLON.PATH_SEP.PATH_SEP; + $this->restServer .= $_SERVER['SERVER_NAME'].PATH_SEP; + $this->restServer .= $this->serviceTechnic.PATH_SEP.$user.PATH_SEP; + + $this->ch = curl_init(); + curl_setopt( $this->ch, CURLOPT_TIMEOUT, 2); + curl_setopt( $this->ch, CURLOPT_POST, 1); + curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 1); + } + //set the message in order to follow the message format + 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. + abstract protected function setMoreProperties( $messageFormated); + + //attach the method to the restServer path, set the type of the message, and the message itself. + protected function setMessageProperties( $method, array $message) + { + $messageFormated = $this->format( $message); + $this->server_method = $this->restServer . $method; + $this->setMoreProperties( $messageFormated); + } + //Send or execute(curl notation) the message using a rest method + public function send( $method, array $message) + { + self::setMessageProperties( $method, $message); + $this->output = curl_exec( $this->ch); + return $this->output; + } + //set the message to GET method type + 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); + return $this->send( $method, $message); + } + //set the message to PUT method type + public function sendPUT( $method, array $message) + { + curl_setopt($this->ch, CURLOPT_PUT, true); + return $this->send( $method, $message); + } + //set the message to DELETE method type + public function sendDELETE( $method, array $message) + { + curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "DELETE"); + return $this->send( $method, $message); + } + //Display all the data that the response could got. + public function displayResponse() + { + $error = curl_error($this->ch); + $result = array( 'header' => '', + 'body' => '', + 'curl_error' => '', + 'http_code' => '', + 'last_url' => ''); + if ( $error != "" ) + { + $result['curl_error'] = $error; + return $result; + } + $response = $this->output; + $header_size = curl_getinfo($this->ch,CURLINFO_HEADER_SIZE); + $result['header'] = substr($response, 0, $header_size); + $result['body'] = substr( $response, $header_size ); + $result['http_code'] = curl_getinfo($this -> ch,CURLINFO_HTTP_CODE); + $result['last_url'] = curl_getinfo($this -> ch,CURLINFO_EFFECTIVE_URL); + + echo $this->type." Response: ".$response."
"; + foreach($result as $index => $data) + { + if( $data != "") + { + echo $index."=".$data."
"; + } + } + echo "
"; + } + //Close the Curl session using the Curl Handle set by curl_init() function. + public function close() + { + curl_close( $this->ch); + } +} + +?> diff --git a/workflow/engine/methods/services/Rest/FormatedMessage.php b/workflow/engine/methods/services/Rest/FormatedMessage.php new file mode 100644 index 000000000..7909acfbc --- /dev/null +++ b/workflow/engine/methods/services/Rest/FormatedMessage.php @@ -0,0 +1,29 @@ +server_method . PATH_SEP . $messageFormated."
"; + // + curl_setopt($this->ch, CURLOPT_URL, $this->server_method); + $contentSelected = $this->content . $this->type; + curl_setopt($this->ch, CURLOPT_HTTPHEADER, array($contentSelected)); + curl_setopt($this->ch, CURLOPT_POSTFIELDS, $messageFormated); + } +} +?> \ No newline at end of file diff --git a/workflow/engine/methods/services/Rest/JsonMessage.php b/workflow/engine/methods/services/Rest/JsonMessage.php new file mode 100644 index 000000000..535657aa8 --- /dev/null +++ b/workflow/engine/methods/services/Rest/JsonMessage.php @@ -0,0 +1,29 @@ +type = "json"; + } + //Format the array parameter to a json format. + protected function format( array $message) + { + if ( empty( $message) ) + { + return ; + } + if ( is_array( $message) ) + { + $jsonMessage = json_encode( $message); + } + return $jsonMessage; + } +} + +?> \ No newline at end of file diff --git a/workflow/engine/methods/services/Rest/RestMessage.php b/workflow/engine/methods/services/Rest/RestMessage.php new file mode 100644 index 000000000..a12fd8ee1 --- /dev/null +++ b/workflow/engine/methods/services/Rest/RestMessage.php @@ -0,0 +1,33 @@ +type = "rest"; + } + //Format the array parameter to a single rest line format separed by '/'. + protected function format( array $message) + { + $rest = ""; + if ( !empty( $message) ) + { + if ( is_array( $message) ) + { + foreach( $message as $index => $data) + { + $rest .= "/" . $data; + } + $rest .= "/"; + } + } + return $rest; + } +} + +?> diff --git a/workflow/engine/methods/services/Rest/SimpleMessage.php b/workflow/engine/methods/services/Rest/SimpleMessage.php new file mode 100644 index 000000000..b9b26606b --- /dev/null +++ b/workflow/engine/methods/services/Rest/SimpleMessage.php @@ -0,0 +1,26 @@ +server_method . PATH_SEP . $messageFormated."
"; + // + curl_setopt($this->ch, CURLOPT_URL, $this->server_method . $messageFormated); + } +} +?> \ No newline at end of file diff --git a/workflow/engine/methods/services/Rest/XmlMessage.php b/workflow/engine/methods/services/Rest/XmlMessage.php new file mode 100644 index 000000000..fdc96ca3e --- /dev/null +++ b/workflow/engine/methods/services/Rest/XmlMessage.php @@ -0,0 +1,34 @@ +type = "xml"; + } + //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) + { + if ( empty( $message) ) + { + return ; + } + if ( is_array( $message) ) + { + $xml = ""; + foreach( $message as $index => $data) + { + $xml .= "<".$index.">".$data.""; + } + $xml .= ""; + } + return $xml; + } +} + +?> diff --git a/workflow/engine/methods/services/Rest/testing.php b/workflow/engine/methods/services/Rest/testing.php new file mode 100644 index 000000000..86e3d85a1 --- /dev/null +++ b/workflow/engine/methods/services/Rest/testing.php @@ -0,0 +1,38 @@ +'admin', 'password'=>'admin'); +$method = "login"; + +$jsonm = new JsonMessage(); +$jsonm->send( $method, $msg); +$jsonm->displayResponse(); + +$xmlm = new XmlMessage(); +$xmlm->send( $method, $msg); +$xmlm->displayResponse(); + +$msg = array("LABEL","LOGIN","en"); +$table = "TRANSLATION"; + +$rest = new RestMessage(); +$rest->sendGET( $table, $msg); +$rest->displayResponse(); + +$msg = array("HOUSE","PUSHIN","en","maullidin","2012-06-06" ); +$rest->sendPOST( $table, $msg); +$rest->displayResponse(); + +$msg = array("HOUSE","PUSHIN","en","wacheneger","2012-07-06" ); +$rest->sendPUT( $table, $msg); +$rest->displayResponse(); + +$msg = array("HOUSE","PUSHIN","en" ); +$rest->sendDELETE( $table, $msg); +$rest->displayResponse(); + + +?>