208941);
echo "GETTING ADDRESSES
";
$request = new RestRequest(API_URL.'/addresses/', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->buildPostBody($data);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetAddress()
{
echo "GETTING ADDRESSES
";
$request = new RestRequest(API_URL.'/addresses/9', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testUpdateAddress()
{
echo "UPDATE ADDRESS
";
$data = array('address' => "5919 S 118TH CIR STE 250",
'last_name' => "Doe Jr.",
'email' => "me@johndoe.com",
'password' => "newsecret"
);
$request = new RestRequest(API_URL.'/subscribers/9/', 'PUT');
$request->buildPostBody($data);
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo json_encode($data).'
';
echo $request->getResponseBody();
}
function testCreateAddress()
{
echo "CREATING ADDRESS
";
$data = array('address' => '5919 S 118TH CIR STE 250',
'city' => 'OMAHA',
'state' => 'NE',
'subscriber_id' => '100',
'zip_code' => '68137',
'company' => 'My Company',
'country' => 'USA',
'first_name' => 'John',
'last_name' => 'Doe'
);
$request = new RestRequest(API_URL.'/addresses/', 'POST');
$request->buildPostBody($data);
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo json_encode($data).'
';
echo $request->getResponseBody();
}
function testDeleteSubscription()
{
echo "DELETE SUBSCRIPTION
";
$request = new RestRequest(API_URL.'/subscriptions/9/', 'DELETE');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testUpdateSubscription()
{
echo "PUT SUBSCRIPTION
";
$data = array('copies' => 2,
'issues' => 12,
);
$request = new RestRequest(API_URL.'/subscriptions/5/', 'PUT');
$request->buildPostBody($data);
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo json_encode($data).'
';
echo $request->getResponseBody();
}
function testSubscriberCustomFieldSet()
{
echo "SET SUBSCRIBER CUSTOM FIELDS
";
$data = array('subscriber_id' => 22);
$data['fields'] = array(
array('field_id' => 34, 'value' => 'value1test'),
array('field_id' => 265, 'value' => 'value2test')
);
$request = new RestRequest(API_URL.'/customfields/', 'PUT');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->buildPostBody($data);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testSubscriberCustomFieldsGet()
{
echo "GET SUBSCRIBER CUSTOM FIELDS
";
$request = new RestRequest(API_URL.'/customfields/30000', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGettingSingleBundle()
{
echo "GETTING SINGLE BUNDLE
";
$request = new RestRequest(API_URL.'/bundles/1', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetBundlesList()
{
$data = array('active' => true,
'promotional' => true,
'min_price' => 10.00,
'max_price' => 15.00);
echo "GETTING BUNDLES
";
$request = new RestRequest(API_URL.'/bundles/', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->buildPostBody($data);
$request->execute();
echo json_encode($data)."
";
echo $request->getResponseBody()."
";
}
function testGetCustomFields()
{
echo "GETTING CUSTOM FIELDS
";
$request = new RestRequest(API_URL.'/customfields/', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetPublicationList()
{
echo "GETTING PUBLICATIONS
";
$request = new RestRequest(API_URL.'/publications/', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetPublication()
{
echo "GETTING SINGLE PUBLICATION
";
$request = new RestRequest(API_URL.'/publications/9', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testCreateSubscriber()
{
echo "CREATING SUBSCRIBER
";
$data = array('first_name' => "John",
'last_name' => "Doe",
'email' => 'test@test.com',
'password' => "secret"
);
$request = new RestRequest(API_URL.'/subscribers/', 'POST');
$request->buildPostBody($data);
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo json_encode($data).'
';
echo $request->getResponseBody();
}
function testGetSubscriber()
{
echo "GET SUBSCRIBER
";
$request = new RestRequest(API_URL.'/subscribers/1023', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testUpdateSubscriber()
{
echo "PUT SUBSCRIBER
";
$data = array('first_name' => "John",
'last_name' => "Doe",
'email' => "test@test.com",
'password' => "secret"
);
$request = new RestRequest(API_URL.'/subscribers/9/', 'PUT');
$request->buildPostBody($data);
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo json_encode($data).'
';
echo $request->getResponseBody();
}
function testDeleteSubscriber()
{
echo "DELETE SUBSCRIBER
";
$request = new RestRequest(API_URL.'/subscribers/4/', 'DELETE');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetSubscriptionList()
{
$data = array('type' => 'PRINT',
'issues_left' => 5,
'limit' => 3);
echo "GET SUBSCRIPTION LIST
";
$request = new RestRequest(API_URL.'/subscriptions/', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->buildPostBody($data);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testGetSingleSubscription()
{
echo "GET SINGLE SUBSCRIPTION
";
$request = new RestRequest(API_URL.'/subscriptions/5', 'GET');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
function testCreateSubscription()
{
echo "CREATE SUBSCRIPTION
";
$data = array('publication_id' => 9,
'mailing_address_id' => '10',
'issues' => 10,
'type' => 'PRINT',
'copies' => 1,
'subscriber_id' => 10);
$request = new RestRequest(API_URL.'/subscriptions/', 'POST');
$request->setUsername(API_KEY);
$request->setPassword(API_PASSWORD);
$request->buildPostBody($data);
$request->execute();
echo "Request Data: ".json_encode($data).'
';
echo "Response Data: ".$request->getResponseBody();
}
class RestRequest
{
protected $url;
protected $verb;
protected $requestBody;
protected $requestLength;
protected $username;
protected $password;
protected $acceptType;
protected $responseBody;
protected $responseInfo;
public function __construct ($url = null, $verb = 'GET', $requestBody = null)
{
$this->url = $url;
$this->verb = $verb;
$this->requestBody = $requestBody;
$this->requestLength = 0;
$this->username = null;
$this->password = null;
$this->acceptType = 'application/json';
$this->responseBody = null;
$this->responseInfo = null;
if ($this->requestBody !== null)
{
$this->buildPostBody();
}
}
public function flush ()
{
$this->requestBody = null;
$this->requestLength = 0;
$this->verb = 'GET';
$this->responseBody = null;
$this->responseInfo = null;
}
public function execute()
{
$ch = curl_init();
$this->setAuth($ch);
try
{
switch (strtoupper($this->verb))
{
case 'GET':
$this->executeGet($ch);
break;
case 'POST':
$this->executePost($ch);
break;
case 'PUT':
$this->executePut($ch);
break;
case 'DELETE':
$this->executeDelete($ch);
break;
default:
throw new InvalidArgumentException('Current verb (' . $this->verb . ') is an invalid REST verb.');
}
}
catch (InvalidArgumentException $e)
{
curl_close($ch);
throw $e;
}
catch (Exception $e)
{
curl_close($ch);
throw $e;
}
}
public function buildPostBody ($data = null)
{
$data = ($data !== null) ? $data : $this->requestBody;
if (!is_array($data))
{
throw new InvalidArgumentException('Invalid data input for postBody. Array expected');
}
$data = http_build_query($data, '', '&');
$this->requestBody = $data;
}
protected function executeGet ($ch)
{
$this->doExecute($ch);
}
protected function executePost ($ch)
{
if (!is_string($this->requestBody))
{
$this->buildPostBody();
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
curl_setopt($ch, CURLOPT_POST, 1);
$this->doExecute($ch);
}
protected function executePut ($ch)
{
if (!is_string($this->requestBody))
{
$this->buildPostBody();
}
$this->requestLength = strlen($this->requestBody);
$fh = fopen('php://memory', 'rw');
fwrite($fh, $this->requestBody);
rewind($fh);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, $this->requestLength);
curl_setopt($ch, CURLOPT_PUT, true);
$this->doExecute($ch);
fclose($fh);
}
protected function executeDelete ($ch)
{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
$this->doExecute($ch);
}
protected function doExecute (&$curlHandle)
{
$this->setCurlOpts($curlHandle);
$this->responseBody = curl_exec($curlHandle);
$this->responseInfo = curl_getinfo($curlHandle);
curl_close($curlHandle);
}
protected function setCurlOpts (&$curlHandle)
{
if((strtoupper($this->verb) == 'GET') && $this->requestBody)
$url = $this->url."?".$this->requestBody;
else
$url = $this->url;
curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType));
}
protected function setAuth (&$curlHandle)
{
if ($this->username !== null && $this->password !== null)
{
curl_setopt($curlHandle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curlHandle, CURLOPT_USERPWD, $this->username . ':' . $this->password);
}
}
public function getAcceptType ()
{
return $this->acceptType;
}
public function setAcceptType ($acceptType)
{
$this->acceptType = $acceptType;
}
public function getPassword ()
{
return $this->password;
}
public function setPassword ($password)
{
$this->password = $password;
}
public function getResponseBody ()
{
return $this->responseBody;
}
public function getResponseInfo ()
{
return $this->responseInfo;
}
public function getUrl ()
{
return $this->url;
}
public function setUrl ($url)
{
$this->url = $url;
}
public function getUsername ()
{
return $this->username;
}
public function setUsername ($username)
{
$this->username = $username;
}
public function getVerb ()
{
return $this->verb;
}
public function setVerb ($verb)
{
$this->verb = $verb;
}
}
?>