/** * @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 get(Request $request) { $method = $request->getMethod(); if (!isset($this->callbacks[$method])) { throw new HandlingException(sprintf('Method "%s" is not registered', $method)); } return $this->callbacks[$method]; }
/** * {@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; }); }
public function testGetWithDecoration() { $request = new Request('foo'); $inner = $this->getCallableMock(self::once(), function (Identity $identity, Request $request) { return sprintf('<inner request="%s" identity="%s">', $request->getMethod(), $identity->getName()); }); $this->innerRouter->expects(self::once())->method('get')->with($request)->willReturn($inner); $this->router->decorate($this->getCallableMock(self::once(), function ($callable) { return function (Identity $identity, Request $request) use($callable) { return '<outer>' . $callable($identity, $request) . '</outer>'; }; })); $callable = $this->router->get($request); $result = $callable(new Identity('baz'), $request); self::assertEquals('<outer><inner request="foo" identity="baz"></outer>', $result); }
/** * @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()])]); }
public static function make($service, Request $request) { return new self(sprintf('Non of the existent bindings for service "%s" support "%s" request', $service, $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); }