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:----UP6xUZcbtLq8tqzIVbtUxhqRuMacxt8jbPdtNNNijXtctG6VSvjqhhhKOW/1qLtiert4Qo6nECydej41g4squ9CWeDkL82vxonbTErjkiG1OwxuHY71Ti6XctOYNNOF8RVoecvz4h3L3d9ozjFlfOTbks/isoIoJWArgR/7+5MkDYyvDxUWuShNGaVD1YMMnTWYYS7zciannuM/HPerYhLa1D35hcotNSoyk4ZTccf2MmYfIXHmukXwK3vfQ4dd2WIMZLtJ9R1vzscVs00/U4OWmftSPT0zHrlRuvqBuNdTUezDJRw7hp2DdPj4l+U7N4vHb3kwJ4T0dYFOPJtUhtc6HU+YEzfpkfuWPMacuo+9guoRTQpVI9iEwVeDzZ4IHEwQ288kwvqBL+s3EDBOyLmzykMiYVEeymNgOg/ttoswxFxdVjP41sltM7UAD/jhO3en6EX+r72w9kl7k8Xfi4Y5PHenEgL/hd8DPNkHZ8zGiASUJQ9lmWDqJOPUJRdmqwAILkkt3m8U64fQxMsQX6ssTneD+BYQQk4HTx3iNIlz4aD/6QqZv8PxV4ZOJAbmYgqMr1N9gxprtqWTdxyUompfIJttPVwi5/R5GIvMsSfxctBwzfPNxGw6hw0AwVI4WCos8GUSEoyJHscMDYjKtY4wmvKuhoMHohwZBX0BG0r4=----ATTACHMENT:----OTMzOTQyNTAxNTI3Nzc1MyA5MDc5OTQyNzQ1MzQwMjc0IDU3Mzc1MDY2MzcwMzcyNzM=