/** * @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; }