diff options
Diffstat (limited to 'vendor/fguillot/json-rpc/src/JsonRPC/Response')
-rw-r--r-- | vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseBuilder.php | 324 | ||||
-rw-r--r-- | vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseParser.php | 154 |
2 files changed, 0 insertions, 478 deletions
diff --git a/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseBuilder.php b/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseBuilder.php deleted file mode 100644 index c1caff92..00000000 --- a/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseBuilder.php +++ /dev/null @@ -1,324 +0,0 @@ -<?php - -namespace JsonRPC\Response; - -use BadFunctionCallException; -use Exception; -use InvalidArgumentException; -use JsonRPC\Exception\AccessDeniedException; -use JsonRPC\Exception\AuthenticationFailureException; -use JsonRPC\Exception\InvalidJsonFormatException; -use JsonRPC\Exception\InvalidJsonRpcFormatException; -use JsonRPC\Exception\ResponseEncodingFailureException; -use JsonRPC\Exception\ResponseException; -use JsonRPC\Validator\JsonEncodingValidator; - -/** - * Class ResponseBuilder - * - * @package JsonRPC - * @author Frederic Guillot - */ -class ResponseBuilder -{ - /** - * Payload ID - * - * @access private - * @var mixed - */ - private $id; - - /** - * Payload ID - * - * @access private - * @var mixed - */ - private $result; - - /** - * Payload error code - * - * @access private - * @var integer - */ - private $errorCode; - - /** - * Payload error message - * - * @access private - * @var string - */ - private $errorMessage; - - /** - * Payload error data - * - * @access private - * @var mixed - */ - private $errorData; - - /** - * HTTP Headers - * - * @access private - * @var array - */ - private $headers = array( - 'Content-Type' => 'application/json', - ); - - /** - * HTTP status - * - * @access private - * @var string - */ - private $status; - - /** - * Exception - * - * @access private - * @var ResponseException - */ - private $exception; - - /** - * Get new object instance - * - * @static - * @access public - * @return ResponseBuilder - */ - public static function create() - { - return new static(); - } - - /** - * Set id - * - * @access public - * @param mixed $id - * @return $this - */ - public function withId($id) - { - $this->id = $id; - return $this; - } - - /** - * Set result - * - * @access public - * @param mixed $result - * @return $this - */ - public function withResult($result) - { - $this->result = $result; - return $this; - } - - /** - * Set error - * - * @access public - * @param integer $code - * @param string $message - * @param string $data - * @return $this - */ - public function withError($code, $message, $data = '') - { - $this->errorCode = $code; - $this->errorMessage = $message; - $this->errorData = $data; - return $this; - } - - /** - * Set exception - * - * @access public - * @param Exception $exception - * @return $this - */ - public function withException(Exception $exception) - { - $this->exception = $exception; - return $this; - } - - /** - * Add HTTP header - * - * @access public - * @param string $name - * @param string $value - * @return $this - */ - public function withHeader($name, $value) - { - $this->headers[$name] = $value; - return $this; - } - - /** - * Add HTTP Status - * - * @access public - * @param string $status - * @return $this - */ - public function withStatus($status) - { - $this->status = $status; - return $this; - } - - /** - * Get status - * - * @access public - * @return string - */ - public function getStatus() - { - return $this->status; - } - - /** - * Get headers - * - * @access public - * @return string[] - */ - public function getHeaders() - { - return $this->headers; - } - - /** - * Build response - * - * @access public - * @return string - */ - public function build() - { - $encodedResponse = json_encode($this->buildResponse()); - JsonEncodingValidator::validate(); - - return $encodedResponse; - } - - /** - * Send HTTP headers - * - * @access public - * @return $this - */ - public function sendHeaders() - { - if (! empty($this->status)) { - header($this->status); - } - - foreach ($this->headers as $name => $value) { - header($name.': '.$value); - } - - return $this; - } - - /** - * Build response payload - * - * @access private - * @return array - */ - private function buildResponse() - { - $response = array('jsonrpc' => '2.0'); - $this->handleExceptions(); - - if (! empty($this->errorMessage)) { - $response['error'] = $this->buildErrorResponse(); - } else { - $response['result'] = $this->result; - } - - $response['id'] = $this->id; - return $response; - } - - /** - * Build response error payload - * - * @access private - * @return array - */ - private function buildErrorResponse() - { - $response = array( - 'code' => $this->errorCode, - 'message' => $this->errorMessage, - ); - - if (! empty($this->errorData)) { - $response['data'] = $this->errorData; - } - - return $response; - } - - /** - * Transform exceptions to JSON-RPC errors - * - * @access private - */ - private function handleExceptions() - { - if ($this->exception instanceof InvalidJsonFormatException) { - $this->errorCode = -32700; - $this->errorMessage = 'Parse error'; - $this->id = null; - } elseif ($this->exception instanceof InvalidJsonRpcFormatException) { - $this->errorCode = -32600; - $this->errorMessage = 'Invalid Request'; - $this->id = null; - } elseif ($this->exception instanceof BadFunctionCallException) { - $this->errorCode = -32601; - $this->errorMessage = 'Method not found'; - } elseif ($this->exception instanceof InvalidArgumentException) { - $this->errorCode = -32602; - $this->errorMessage = 'Invalid params'; - } elseif ($this->exception instanceof ResponseEncodingFailureException) { - $this->errorCode = -32603; - $this->errorMessage = 'Internal error'; - $this->errorData = $this->exception->getMessage(); - } elseif ($this->exception instanceof AuthenticationFailureException) { - $this->errorCode = 401; - $this->errorMessage = 'Unauthorized'; - $this->status = 'HTTP/1.0 401 Unauthorized'; - $this->withHeader('WWW-Authenticate', 'Basic realm="JsonRPC"'); - } elseif ($this->exception instanceof AccessDeniedException) { - $this->errorCode = 403; - $this->errorMessage = 'Forbidden'; - $this->status = 'HTTP/1.0 403 Forbidden'; - } elseif ($this->exception instanceof ResponseException) { - $this->errorCode = $this->exception->getCode(); - $this->errorMessage = $this->exception->getMessage(); - $this->errorData = $this->exception->getData(); - } elseif ($this->exception instanceof Exception) { - $this->errorCode = $this->exception->getCode(); - $this->errorMessage = $this->exception->getMessage(); - } - } -} diff --git a/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseParser.php b/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseParser.php deleted file mode 100644 index 02d449ba..00000000 --- a/vendor/fguillot/json-rpc/src/JsonRPC/Response/ResponseParser.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - -namespace JsonRPC\Response; - -use BadFunctionCallException; -use InvalidArgumentException; -use Exception; -use JsonRPC\Exception\InvalidJsonFormatException; -use JsonRPC\Exception\InvalidJsonRpcFormatException; -use JsonRPC\Exception\ResponseException; -use JsonRPC\Validator\JsonFormatValidator; - -/** - * Class ResponseParser - * - * @package JsonRPC\Request - * @author Frederic Guillot - */ -class ResponseParser -{ - /** - * Payload - * - * @access private - * @var mixed - */ - private $payload; - - /** - * Do not immediately throw an exception on error. Return it instead. - * - * @var bool - */ - private $returnException = false; - - /** - * Get new object instance - * - * @static - * @access public - * @return ResponseParser - */ - public static function create() - { - return new static(); - } - - /** - * Set Return Exception Or Throw It - * - * @param $returnException - * @return ResponseParser - */ - public function withReturnException($returnException) - { - $this->returnException = $returnException; - return $this; - } - - /** - * Set payload - * - * @access public - * @param mixed $payload - * @return $this - */ - public function withPayload($payload) - { - $this->payload = $payload; - return $this; - } - - /** - * Parse response - * - * @return array|Exception|null - * @throws InvalidJsonFormatException - * @throws BadFunctionCallException - * @throws InvalidJsonRpcFormatException - * @throws InvalidArgumentException - * @throws Exception - * @throws ResponseException - */ - public function parse() - { - JsonFormatValidator::validate($this->payload); - - if ($this->isBatchResponse()) { - $results = array(); - - foreach ($this->payload as $response) { - $results[] = self::create() - ->withReturnException($this->returnException) - ->withPayload($response) - ->parse(); - } - - return $results; - } - - if (isset($this->payload['error']['code'])) { - try { - $this->handleExceptions(); - } catch (Exception $e) { - if ($this->returnException) { - return $e; - } - throw $e; - } - } - - return isset($this->payload['result']) ? $this->payload['result'] : null; - } - - /** - * Handle exceptions - * - * @access private - * @throws InvalidJsonFormatException - * @throws InvalidJsonRpcFormatException - * @throws ResponseException - */ - private function handleExceptions() - { - switch ($this->payload['error']['code']) { - case -32700: - throw new InvalidJsonFormatException('Parse error: '.$this->payload['error']['message']); - case -32600: - throw new InvalidJsonRpcFormatException('Invalid Request: '.$this->payload['error']['message']); - case -32601: - throw new BadFunctionCallException('Procedure not found: '.$this->payload['error']['message']); - case -32602: - throw new InvalidArgumentException('Invalid arguments: '.$this->payload['error']['message']); - default: - throw new ResponseException( - $this->payload['error']['message'], - $this->payload['error']['code'], - null, - isset($this->payload['error']['data']) ? $this->payload['error']['data'] : null - ); - } - } - - /** - * Return true if we have a batch response - * - * @access private - * @return boolean - */ - private function isBatchResponse() - { - return array_keys($this->payload) === range(0, count($this->payload) - 1); - } -} |