<?php
class GetResponse {
private $api_key;
private $api_url = 'https://api.getresponse.com/v3';
private $timeout = 8;
private $enterprise_domain = null;
public $http_status;
/**
* Set api key and optionally API endpoint
* @param $api_key
* @param null $api_url
*/
public function __construct ($api_key, $api_url = null) {
$this->api_key = $api_key;
if ( !empty($api_url)) $this->api_url = $api_url;
}
/**
* We can modify internal settings
* @param $key
* @param $value
*/
function __set($key, $value) {
$this->{$key} = $value;
}
/**
* get account details
*
* @return mixed
*/
public function accounts() {
return $this->call('accounts');
}
/**
* @return mixed
*/
public function ping() {
return $this->accounts();
}
/**
* Return all campaigns
* @return mixed
*/
public function getCampaigns() {
return $this->call('campaigns');
}
/**
* get single campaign
* @param string $campaign_id retrieved using API
* @return mixed
*/
public function getCampaign($campaign_id) {
return $this->call('campaigns/' . $campaign_id);
}
/**
* adding campaign
* @param $params
* @return mixed
*/
public function createCampaign($params) {
return $this->call('campaigns', 'POST', $params);
}
/**
* list all RSS newsletters
* @return mixed
*/
public function getRSSNewsletters() {
$this->call('rss-newsletters', 'GET', null);
}
/**
* send one newsletter
*
* @param $params
* @return mixed
*/
public function sendNewsletter($params) {
return $this->call('newsletters', 'POST', $params);
}
/**
* @param $params
* @return mixed
*/
public function sendDraftNewsletter($params) {
return $this->call('newsletters/send-draft', 'POST', $params);
}
/**
* add single contact into your campaign
*
* @param $params
* @return mixed
*/
public function addContact($params) {
return $this->call('contacts', 'POST', $params);
}
/**
* retrieving contact by id
*
* @param string $contact_id - contact id obtained by API
* @return mixed
*/
public function getContact($contact_id) {
return $this->call('contacts/' . $contact_id);
}
/**
* search contacts
*
* @param $params
* @return mixed
*/
public function searchContacts($params = null) {
return $this->call('search-contacts/' . $this->setParams($params));
}
/**
* retrieve segment
*
* @param $id
* @return mixed
*/
public function getContactsSearch($id) {
return $this->call('search-contacts/' . $id);
}
/**
* add contacts search
*
* @param $params
* @return mixed
*/
public function addContactsSearch($params) {
return $this->call('search-contacts/', 'POST', $params);
}
/**
* add contacts search
*
* @param $id
* @return mixed
*/
public function deleteContactsSearch($id) {
return $this->call('search-contacts/' . $id, 'DELETE');
}
/**
* get contact activities
* @param $contact_id
*/
public function getContactActivities($contact_id) {
$this->call('contacts/' . $contact_id . '/activities');
}
/**
* retrieving contact by params
* @param array $params
*
* @return mixed
*/
public function getContacts($params = array()) {
return $this->call('contacts?' . $this->setParams($params));
}
/**
* updating any fields of your subscriber (without email of course)
* @param $contact_id
* @param array $params
*
* @return mixed
*/
public function updateContact($contact_id, $params = array()) {
return $this->call('contacts/' . $contact_id, 'POST', $params);
}
/**
* drop single user by ID
*
* @param string $contact_id - obtained by API
* @return mixed
*/
public function deleteContact($contact_id) {
return $this->call('contacts/' . $contact_id, 'DELETE');
}
/**
* retrieve account custom fields
* @param array $params
*
* @return mixed
*/
public function getCustomFields($params = array()) {
return $this->call('custom-fields?' . $this->setParams($params));
}
/**
* add custom field
*
* @param $params
* @return mixed
*/
public function setCustomField($params) {
return $this->call('custom-fields', 'POST', $params);
}
/**
* retrieve single custom field
*
* @param string $cs_id obtained by API
* @return mixed
*/
public function getCustomField($custom_id) {
return $this->call('custom-fields/' . $custom_id, 'GET');
}
/**
* retrieving billing information
*
* @return mixed
*/
public function getBillingInfo() {
return $this->call('accounts/billing');
}
/**
* get single web form
*
* @param int $w_id
* @return mixed
*/
public function getWebForm($w_id) {
return $this->call('webforms/' . $w_id);
}
/**
* retrieve all webforms
* @param array $params
*
* @return mixed
*/
public function getWebForms($params = array()) {
return $this->call('webforms?' . $this->setParams($params));
}
/**
* get single form
*
* @param int $form_id
* @return mixed
*/
public function getForm($form_id) {
return $this->call('forms/' . $form_id);
}
/**
* retrieve all forms
* @param array $params
*
* @return mixed
*/
public function getForms($params = array()) {
return $this->call('forms?' . $this->setParams($params));
}
/**
* Curl run request
*
* @param null $api_method
* @param string $http_method
* @param array $params
* @return mixed
* @throws Exception
*/
private function call($api_method = null, $http_method = 'GET', $params = array())
{
if (empty($api_method))
{
return (object)array(
'httpStatus' => '400',
'code' => '1010',
'codeDescription' => 'Error in external resources',
'message' => 'Invalid api method'
);
}
$params = json_encode($params);
$url = $this->api_url . '/' . $api_method;
$options = array(
CURLOPT_URL => $url,
CURLOPT_ENCODING => 'gzip,deflate',
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => $this->timeout,
CURLOPT_HEADER => false,
CURLOPT_USERAGENT => 'PHP GetResponse client 0.0.2',
CURLOPT_HTTPHEADER => array('X-Auth-Token: api-key ' . $this->api_key, 'Content-Type: application/json')
);
if ( !empty($this->enterprise_domain) ) {
$options[CURLOPT_HTTPHEADER][] = 'X-Domain: ' . $this->enterprise_domain;
}
if ($http_method == 'POST')
{
$options[CURLOPT_POST] = 1;
$options[CURLOPT_POSTFIELDS] = $params;
}
else if ($http_method == 'DELETE')
{
$options[CURLOPT_CUSTOMREQUEST] = 'DELETE';
}
$curl = curl_init();
curl_setopt_array($curl, $options);
$response = json_decode(curl_exec($curl));
$this->http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return (object)$response;
}
/**
* @param array $params
*
* @return string
*/
private function setParams($params = array())
{
$result = array();
if (is_array($params))
{
foreach ($params as $key => $value)
{
$result[$key] = $value;
}
}
return http_build_query($result);
}
}
preferences:
39.58 ms | 402 KiB | 5 Q