Advanced Example
The following example uses PHP cURL module, and thus it can send all four supported HTTP request methods (GET, PUT, POST and DELETE). The example consists of a library and the example code.
<?php
useVCCAPIv2RestClient;
require_once ('../RestClient.php');
$customer = 'bdevel';
$password = 'PASSWORD';
$apiClient = new RestClient($customer, $password);
if (!$apiClient->get('/v2/projects')) {
echo "Error(1):n";
echo 'Status code: ' . $apiClient->response_code . "n";
echo $apiClient->error . "nn";
exit(1);
}
$projects = $apiClient->result['response'];
var_export($projects);
$selected_projectid = $projects[0]['projectid'];
if (!$apiClient->get('/v2/projects/' . $selected_projectid)) {
echo 'Error(2): ' . $apiClient->response_code . "n";
exit(2);
}
$project = $apiClient->result;
var_export($project);
<?php
namespaceVCCAPIv2;
useInvalidArgumentException;
/**
* Rest API client
*/
class RestClient
{
const DOMAIN_PATTERN = 'https://%s.asp.virtual-call-center.eu';
public $http_info;
public $result;
public $response_code;
public $connect_timeout = 3;
public $exec_timeout = 60;
public $error;
public
function __construct($customer, $password, $options = array())
{
$this->url = sprintf(self::DOMAIN_PATTERN, $customer);
$this->username = $customer;
$this->password = $password;
$this->options = $options;
}
public
function get($resource)
{
return $this->call('GET', $resource);
}
public
function post($resource, $data)
{
return $this->call('POST', $resource, $data);
}
public
function put($resource, $data)
{
return $this->call('PUT', $resource, $data);
}
public
function delete($resource)
{
return $this->call('DELETE', $resource);
}
protected
function call($method, $resource, $data = null)
{
unset($this->http_info);
unset($this->result);
unset($this->response_code);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url . $resource);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (isset($this->username) and isset($this->password)) {
curl_setopt($ch, CURLOPT_USERPWD, $this->username . ':' . $this->password);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
}
if (isset($this->options['accept_invalid_ssl']) and $this->options['accept_invalid_ssl']) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connect_timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->exec_timeout);
if ($data) {
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json'
));
$data = json_encode($data);
}
switch ($method) {
case 'GET':
break;
case 'PUT':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-HTTP-Method-Override: PUT'
));
break;
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-HTTP-Method-Override: POST'
));
break;
case 'DELETE':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-HTTP-Method-Override: DELETE'
));
break;
case 'OPTIONS':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'OPTIONS');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-HTTP-Method-Override: OPTIONS'
));
break;
default:
throw new InvalidArgumentException('HTTP method invalid: ' . $method);
}
set_time_limit($this->exec_timeout + 1);
$json_result = curl_exec($ch);
$this->result = json_decode($json_result, true);
$this->http_info = curl_getinfo($ch);
$this->error = curl_error($ch);
$this->response_code = $this->http_info['http_code'];
curl_close($ch);
if ($this->response_code == '200') {
return true;
}
return false;
}
}
Comments
Can’t find what you need? Use the comment section below to connect with others, get answers from our experts, or share your ideas with us.
There are no comments yet.