/**
  * @param array       $vars
  * @param Client      $client
  * @param HttpRequest $httpRequest
  * @return mixed
  */
 public function relay($vars, Client $client, HttpRequest $httpRequest)
 {
     $url = $client->webHookEndPoint();
     $httpRequest->setAuth($client->name(), $client->apiKey());
     $httpRequest->post($url, $vars);
     return $httpRequest->statusCode() == 200 ? true : false;
 }
 /**
  * @param HttpRequest $httpRequest
  */
 public function fire(HttpRequest $httpRequest)
 {
     // the index is the name of the queue, the value is the URL the consumer should call to
     //     process the queue item
     $queues = array('AmbitiousMailSenderEmailSend' => Route('queueConsumerEmailSend'));
     $queue_consumer_url = Route('queueConsumerSetup');
     echo $queue_consumer_url;
     foreach ($queues as $queue_name => $url) {
         $requestData = ['url' => $url, 'queue_name' => $queue_name];
         $httpRequest->post($queue_consumer_url, $requestData, 1, true, false);
     }
 }
 /**
  * Listener for the queue
  * @param string $consumer_url
  * @param array $post_vars
  */
 public function consume($consumer_url, $post_vars = array())
 {
     $this->consumer_url = $consumer_url;
     $this->consumer_post = $post_vars;
     if ($this->consumer_count < $this->consumer_max) {
         $this->consumer_start = time();
         $callback = function (AMQPMessage $message) {
             $post_vars = $this->consumer_post;
             $post_vars['url'] = $this->consumer_url;
             $post_vars['queue'] = $this->queue;
             $post_vars['message'] = $message->body;
             $response = $this->httpRequest->post($this->consumer_url, $post_vars);
             $code = $this->httpRequest->statusCode();
             if ($code == 200) {
                 $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
             } else {
                 // log the error to a file
                 $log_message = $code . "\n\n";
                 $log_message .= $message->body . "\n\n";
                 $log_message .= print_r($message, true);
                 $log_message .= "\n\n\n";
                 $log_message .= print_r($response, true);
                 Log::error($log_message);
             }
             if ($this->consumer_start + $this->ttl < time()) {
                 $this->channel->basic_cancel($message->delivery_info['consumer_tag']);
             }
         };
         $this->channel->basic_consume($this->queue, '', false, false, false, false, $callback);
         while (count($this->channel->callbacks)) {
             $this->channel->wait();
         }
     }
 }