public function testWithoutHeader()
 {
     $request = new Request('', '', [], ['foo' => 'bar', 'baz' => 'qux']);
     $newRequest = $request->withoutHeader('baz');
     $this->assertNotSame($request, $newRequest);
     $this->assertEquals(['foo' => 'bar'], $newRequest->getHeaders());
 }
 /**
  * {@inheritdoc}
  */
 protected function findCallback(Request $request)
 {
     if (!isset($this->callbacks[$request->getTopic()])) {
         return;
     }
     foreach ($this->callbacks[$request->getTopic()] as $version => $callback) {
         if (version_compare($version, $request->getVersion(), '<=')) {
             return $callback;
         }
     }
     return;
 }
 /**
  * @param LocationInterface $location
  * @param Request           $request
  *
  * @return AMQPMessage
  */
 private function createMessage(LocationInterface $location, Request $request)
 {
     $encoded = $this->encoder->encode($request->getArguments());
     return new AMQPMessage($encoded->getBody(), ['content_type' => $encoded->getType(), 'message_id' => uniqid('', true), 'timestamp' => time(), 'application_headers' => new AMQPTable(array_merge($request->getHeaders(), ['to' => $location->name(), 'topic' => $request->getTopic(), 'version' => $request->getVersion()]))]);
 }
 /**
  * @param Request              $request
  * @param \ReflectionParameter $parameter
  *
  * @return mixed
  */
 public function getParameterValue(Request $request, \ReflectionParameter $parameter)
 {
     if ($request->hasArgument($name = $parameter->name)) {
         return $request->getArgument($name);
     }
     if ($request->hasArgument($name = $this->getCamelCaseName($parameter->name))) {
         return $request->getArgument($name);
     }
     return $request->getArgument($this->getSneakCaseName($name));
 }
 public static function make($service, Request $request)
 {
     return new self(sprintf('Non of the existent bindings for service "%s" support "%s" request, version "%s"', $service, $request->getTopic(), $request->getVersion()));
 }
 /**
  * @param string  $service
  * @param Request $request
  *
  * @return string
  */
 private function getEncodedHeaders($service, Request $request)
 {
     $headers = ['Accept: application/json', 'User-Agent: Message Bus Client', 'Content-Type: application/json', self::TO_HEADER . ': ' . $service, self::TOPIC_HEADER . ': ' . $request->getTopic(), self::VERSION_HEADER . ': ' . $request->getVersion()];
     if ($this->token) {
         $headers[] = 'Authorization: Basic ' . $this->token;
     }
     foreach ($request->getHeaders() as $key => $value) {
         $name = implode('-', array_map('ucfirst', explode('_', $key)));
         $headers[] = sprintf('%s%s: %s', self::HEADER_PREFIX, $name, $value);
     }
     return $headers;
 }