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:----l5fofMfkJsVeocjdjPGEZKm9W/QFu85XMXQPhUI8xxwvVKrNsckj97tVtaYN824zdVAjtDqeRyDdHL1vQhTOzWyCT3XoUSeR5hLwVbzkSPK7kyQHL/ZyMj1oBOj9oYFACM/3GLpNO1fjChVS8AsbLJMen13YRhgCnEBEKMm4GHGui3mQhN16iisIereCE/hPhU3ZgmQJ0LakZn3qDhrrXgvfVqKeK0+0S4Bm3EsV0uRaFyNipRlL1ZyfblwItrVcjkJf8gaaCDc/Jyf5WlhQq2r3/3vI1MPaA4ybcFvjlOd034PdharPJkW5h3o9zvF4Jb+5EbA/Gumh+X1nyT+QBfBxJ173fb+0vlo9ilC9VLVSXIjMLW6FxPTOKHGMIMKIJ6AFYXFxHY0uv/Z+GQCSbDfWgP/LPrGDykMilZCffEI0yfGanl2Xc8HpHMC1b7eBE4oH4DEqSqR6JtgErOZm4jngUsiY/rWYy9z6/bausaA3qQLPMBQSmihwo3pgI5SlyxhjqGYQIxv4xLqgzsLd4QxVsPTdrSdw4d6NL/koJngATP85bo+OygZV63elOhRhiFN5fSnrBYSUzfRaLES4qvABe/L3HZYrhTSwbzNWQKfLJAbjVh2U8y43g7JOMMemLBb0cD6DwV3fyuEqwWfgSUgQ23HoAoJ0694SApSzPSI=----ATTACHMENT:----NDM3MjcyMTg0OTE1MzMxNiAxNDY1NTY2ODY4MDk2OTQ1IDU4MjcwNTI1NjQ2MDU0MDk=