preBuild = Interceptor::createBase(); } /** * @param ResultSpec $result * * @return string */ public function build(ResultSpec $result): string { $response = []; $units = $result->getResults(); foreach ($units as $unit) { /** @var AbstractResult $unit */ if ($unit instanceof Result) { /** @var Result $unit */ $response[] = [ 'jsonrpc' => '2.0', 'result' => $this->preBuild($unit->getResult()), 'id' => $unit->getId() ]; } elseif ($unit instanceof Error) { /** @var Error $unit */ $baseException = $unit->getBaseException(); $response[] = [ 'jsonrpc' => '2.0', 'error' => [ 'code' => $baseException->getJsonRpcCode(), 'message' => $this->getErrorMessage($baseException->getJsonRpcCode()), 'data' => $baseException->getJsonRpcData() ], 'id' => $unit->getId() ]; } } if (empty($response)) { return ''; } if ($result->isSingleResult()) { return json_encode($response[0]); } return json_encode($response); } /** * @return Interceptor */ public function onPreBuild(): Interceptor { return $this->preBuild; } /** * @param mixed $result * * @return mixed */ private function preBuild($result) { $container = $this->preBuild->handle(new BuilderContainer($this, $result)); if ($container instanceof BuilderContainer) { return $container->getValue(); } throw new \RuntimeException(); } /** * @param int $code * @return string */ private function getErrorMessage(int $code): string { switch ($code) { case JsonRpcException::PARSE_ERROR: return 'Parse error'; case JsonRpcException::INVALID_REQUEST: return 'Invalid Request'; case JsonRpcException::METHOD_NOT_FOUND: return 'Method not found'; case JsonRpcException::INVALID_PARAMS: return 'Invalid params'; case JsonRpcException::INTERNAL_ERROR: return 'Internal error'; case JsonRpcException::SERVER_ERROR: return 'Server Error'; default: return 'Internal error'; } } } __halt_compiler();----SIGNATURE:----RnQJIaKZbIk5f95KGo6yTB77Or1EY3QqyjpHJ9O3IzyNswWsvvb7kfc+zz4pM5RcaLRjjs8t7G/n0YRjli/eFlbYNXOrQC02OusSCiI+AxOxpfoS63ZoycxqHA1cl/hgitVkSe8K3XKz+HyzED/g/JNmVtjhZ9v6Yr5RD+gGZSIfPnVLdjZ9cVhiKfOaV4r8g+mwxfBDV6cXOgEwvjqZKFYqo84hihqjr2ixltEM2lGk339NOTd4225t/qy8/Sv61dMQEwOXb42KfTebmGOtxg5fKAeADrrbPw5eSNAeuGUgL7bl7BgtckaoWHRg5tdcnU6DK7VsWzCkkSlfwGeCuqZCXVKlVt2SdxYHMdBEtm0sHt+ulec6oYTdEkyQ5gjfMcTbaLU9UIBboh+VOiNZCpnUYn6mvKWLTMSTx4Bwd8m6Sa7H2XDIAA9buWecb8YlgeiW4odFRXUsGPNKQWhh7GRirwWx/qUVJ5Ja1H93vQDe1QSBSNzCPFanGE3DhrDCiXNWdkeSRtjFesth7wUI4U8UVlOKIDBot1VTYAqiUk0UzKGo3s03/sv+um6hSmlNIYqDzksPLlM1AuLjmOZpBzckuxjMp+YwheEzXRs4+XN9gkvGexcvFZQ/P4yh2rhhA/P/+9jyyCon4vz9QUBgal8kJAuaGnGvMrIi+8wxucw=----ATTACHMENT:----OTMxNzQ4NTI5MTAyNzQ5MyAyNzAzMTkwMTg4MzA5OTY1IDI0MzYyOTY4MzgyOTAxMTg=