/** * Constructor. * @param $api_key string Your api key (Ignored for get_apikey requests) * @param $protocol string The protocol to use for requests (http|https) * @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE * @param $host string The host to send API requests to. There is no need to change this * @param $log CS_REST_Log The logger to use. Used for dependency injection * @param $serialiser The serialiser to use. Used for dependency injection * @param $transport The transport to use. Used for dependency injection * @access public */ function CS_REST_Wrapper_Base($api_key, $protocol = 'https', $debug_level = CS_REST_LOG_NONE, $host = 'api.createsend.com', $log = NULL, $serialiser = NULL, $transport = NULL) { $this->_log = is_null($log) ? new CS_REST_Log($debug_level) : $log; $this->_protocol = $protocol; $this->_base_route = $protocol . '://' . $host . '/api/v3/'; $this->_log->log_message('Creating wrapper for ' . $this->_base_route, get_class($this), CS_REST_LOG_VERBOSE); $this->_transport = is_null($transport) ? @CS_REST_TransportFactory::get_available_transport($this->is_secure(), $this->_log) : $transport; $transport_type = method_exists($this->_transport, 'get_type') ? $this->_transport->get_type() : 'Unknown'; $this->_log->log_message('Using ' . $transport_type . ' for transport', get_class($this), CS_REST_LOG_WARNING); $this->_serialiser = is_null($serialiser) ? @CS_REST_SerialiserFactory::get_available_serialiser($this->_log) : $serialiser; $this->_log->log_message('Using ' . $this->_serialiser->get_type() . ' json serialising', get_class($this), CS_REST_LOG_WARNING); $this->_default_call_options = array('credentials' => $api_key . ':nopass', 'userAgent' => 'CS_REST_Wrapper v' . CS_REST_WRAPPER_VERSION . ' PHPv' . phpversion() . ' over ' . $transport_type . ' with ' . $this->_serialiser->get_type(), 'contentType' => 'application/json; charset=utf-8', 'deserialise' => true, 'host' => $host, 'protocol' => $protocol); }
<?php require_once '../../class/serialisation.php'; require_once '../../class/log.php'; // Get a serialiser for the webhook data - We assume here that we're dealing with json $serialiser = @CS_REST_SerialiserFactory::get_available_serialiser(new CS_REST_Log(CS_REST_LOG_NONE)); // Read all the posted data from the input stream $raw_post = file_get_contents("php://input"); // We can log the raw data straight to disk $raw_log = fopen('raw_log.txt', 'a') or die('Can\'t open raw log'); fwrite($raw_log, date('H:i:s') . $raw_post . "\n\n\n"); fclose($raw_log); // And deserialise the data $deserialised_data = $serialiser->deserialise($raw_post); $parsed_log = fopen('parsed_log.txt', 'a') or die('Can\'t open parsed log'); fwrite($parsed_log, date('H:i:s') . ' Got hook data for list: ' . $deserialised_data->ListID . "\n"); // And now just do something with the data foreach ($deserialised_data->Events as $event) { fwrite($parsed_log, 'Got ' . $event->Type . ' event for: ' . $event->EmailAddress . "\n"); fwrite($parsed_log, var_export($event, true)); } fclose($parsed_log);
function serialise($data) { return $this->_serialiser->encode(@CS_REST_SerialiserFactory::check_encoding($data)); }