示例#1
0
 /**
  * @param Request $request
  *
  * @return string
  *
  * @throws EncodingException
  */
 private function getEncodedBody(Request $request)
 {
     $body = json_encode(['jsonrpc' => '2.0', 'method' => $request->getMethod(), 'params' => $request->getArguments(), 'id' => 1]);
     if (json_last_error() !== JSON_ERROR_NONE) {
         throw new EncodingException(sprintf('Unable to encode request: %s', json_last_error_msg()));
     }
     return $body;
 }
 /**
  * {@inheritdoc}
  */
 public function call(Identity $identity, Request $request)
 {
     $this->logger->debug('Call "%method%" to service "%service%"', ['service' => $identity->getName(), 'request_method' => $request->getMethod(), 'request_arguments' => $request->getArguments(), 'request_headers' => $request->getHeaders(), 'driver' => get_class($this->driver)]);
     $promise = $this->driver->call($identity, $request);
     return new Promise(function ($timeout) use($identity, $request, $promise) {
         $response = $promise->resolve($timeout);
         $this->logger->debug('Response from "%service%"', ['service' => $identity->getName(), 'request_method' => $request->getMethod(), 'response_value' => $response->getValue(), 'response_headers' => $response->getHeaders(), 'driver' => get_class($this->driver)]);
         return $response;
     });
 }
 /**
  * @param Request $request
  *
  * @return Message
  */
 protected function createRequest(Request $request)
 {
     $arguments = $request->getArguments();
     $encoded = $this->getEncoder()->encode($arguments);
     return new Message($encoded->getBody(), ['content-type' => $encoded->getType(), 'message-id' => uniqid('', true), 'timestamp' => time(), 'headers' => array_merge($request->getHeaders(), ['topic' => $request->getMethod()])]);
 }
 /**
  * {@inheritdoc}
  */
 public function broadcast(Request $request)
 {
     $this->logger->debug('New broadcast "%method%"', ['request_method' => $request->getMethod(), 'request_arguments' => $request->getArguments(), 'request_headers' => $request->getHeaders(), 'broadcaster' => get_class($this->broadcaster)]);
     $this->broadcaster->broadcast($request);
 }
 /**
  * @param Request              $request
  * @param \ReflectionParameter $parameter
  *
  * @return mixed
  */
 public function getParameterValue(Request $request, \ReflectionParameter $parameter)
 {
     $args = $request->getArguments();
     $names = [$parameter->name, $this->getCamelCaseName($parameter->name), $this->getSneakCaseName($parameter->name)];
     foreach ($names as $name) {
         if (isset($args[$name])) {
             return $args[$name];
         }
     }
     return null;
 }