Difference between revisions of "PHP Examples (Rest API)"
From Rackspace Email & Apps API
(Sync to latest.) |
(No difference)
|
Revision as of 07:25, 29 March 2010
PHP
<?php
class WebMethods
{
const VERSION = 'v0';
const SERVER_HOST = 'api.emailsrvr.com';
public function get($url_string, $format)
{
$url = $this->getUrl($url_string);
$headers = array();
$this->signRequest($headers);
$this->assignFormat($headers, $format);
$session = curl_init($url);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
echo $response;
}
public function post($url_string, $fields, $format)
{
$url = $this->getUrl($url_string);
$headers = array();
$this->signRequest($headers);
$this->assignFormat($headers, $format);
$session = curl_init($url);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_POSTFIELDS, $fields);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
echo $response;
}
public function put($url_string, $fields, $format)
{
$url = $this->getUrl($url_string);
$headers = array();
$this->signRequest($headers);
$this->assignFormat($headers, $format);
$session = curl_init($url);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($session, CURLOPT_POSTFIELDS, $fields);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
echo $response;
}
public function delete($url_string, $format)
{
$url = $this->getUrl($url_string);
$headers = array();
$this->signRequest($headers);
$this->assignFormat($headers, $format);
$session = curl_init($url);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
echo $response;
}
public function signRequest(&$headers)
{
$user_agent = 'Api Test';
$time_stamp = 'YYYYMMDDHHmmss';
$api_key = 'XXXXXXXXXXXXXXXXXXXX';
$secret_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$data_to_sign = $api_key . $user_agent . $time_stamp . $secret_key;
$signature = base64_encode(sha1($data_to_sign, true));
$headers[] = "User-Agent: $user_agent";
$headers[] = "X-Api-Signature: $api_key:$time_stamp:$signature";
}
public function assignFormat(&$headers, $format)
{
$headers[] = "Accept: $format";
}
public function getUrl($url_string)
{
$url = 'http://' . self::SERVER_HOST . '/' . self::VERSION . $url_string;
return $url;
}
}
?>
<?php require_once 'WebMethods.php'; $client = new WebMethods(); $url = '/customers'; $form = 'name=new customer&referenceNumber=1000'; $format = 'text/xml'; $client->post($url, $form, $format); ?>