Example #1
0
 /**
  * Execute batch.
  *
  * @param Contracts\RequestExecutor $executor
  *
  * @throws Exception\JsonRpcException
  *
  * @return Jsonable|null
  */
 public function execute(Contracts\RequestExecutor $executor)
 {
     /** @var Request[] $requests */
     //        $requests = array_map(
     //            function ($requestData) {
     //                return $this->requestFactory->createRequest($requestData);
     //            }, $this->batch
     //        );
     $response = new BatchResponse();
     foreach ($this->batch as $requestData) {
         $request = null;
         try {
             $request = $this->requestFactory->createRequest($requestData);
             $requestResponse = $executor->execute($request);
             if (null !== $requestResponse) {
                 $response->add($requestResponse);
             }
         } catch (Exception\JsonRpcException $e) {
             $response->add(Response::constructExceptionErrorResponse($request ? $request->getId() : null, $e));
         } catch (\Exception $e) {
             $response->add(Response::constructExceptionErrorResponse($request ? $request->getId() : null, $e));
         }
     }
     return $response;
 }
Example #2
0
 /**
  * @param \Exception             $e
  * @param Contracts\Request|null $request
  *
  * @throws Exception\InternalErrorException
  *
  * @return Response|null
  */
 private function handleException(\Exception $e, Contracts\Request $request = null)
 {
     $handlerResult = $this->runExceptionHandlers($e, $request);
     if (!$handlerResult) {
         $this->logger->error($e);
     }
     if ($request && !$request->getId()) {
         return null;
     }
     if ($handlerResult instanceof Response) {
         return $handlerResult;
     }
     return Response::constructExceptionErrorResponse($request ? $request->getId() : null, new Exception\InternalErrorException());
 }