Example #1
0
 /**
  * @param Interfaces\Context $context
  * @return void
  */
 public function execute(Interfaces\Context $context)
 {
     try {
         $configuration = $this->getConfiguration();
         $contextUrl = $context->getUrl();
         $url = $contextUrl->getFullUrl();
         $options = ['headers' => ['access-token' => $configuration->getAccessToken(), 'user-key' => $configuration->getUserKey()], 'exceptions' => false];
         if (strtolower($context->getHttpMethod()) === 'get') {
             // send context on query string
             $options['query'] = $context->exportContextData();
         } else {
             // send context on request body as JSON
             $options['body'] = json_encode($context->exportContextData());
         }
         $this->logRequest($url, $options, $context->getHttpMethod());
         $response = $this->getClient()->{$context->getHttpMethod()}($url, $options);
         $this->checkResponse($response);
         $this->logResponse($response);
         return $response;
     } catch (\Exception $e) {
         $message = "Unable to execute context {$context->getName()}" . " ( Exception message: {$e->getMessage()})";
         $this->logger->error($message, $context->exportContextData());
         $retryMessage = sprintf('Try Again - Message: %s - Code: %s', $e->getMessage(), $e->getCode());
         $code = 500;
         if ($e instanceof \GuzzleHttp\Exception\RequestException) {
             $this->logResponse($e->getResponse());
             $retryMessage = $e->getResponse()->getBody();
             $code = $e->getResponse()->getStatusCode();
         }
         throw new Exceptions\RetryMessage($retryMessage, $code);
     }
 }