Merge pull request #719 from stratoss/stratoss-patch-exeption

Getter and setter for the payload and ability to pass options to json_encode
This commit is contained in:
Andrew Millington 2018-02-11 22:48:23 +00:00 committed by GitHub
commit fea577f25b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -33,6 +33,11 @@ class OAuthServerException extends \Exception
*/ */
private $redirectUri; private $redirectUri;
/**
* @var array
*/
private $payload;
/** /**
* Throw a new exception. * Throw a new exception.
* *
@ -50,6 +55,33 @@ class OAuthServerException extends \Exception
$this->errorType = $errorType; $this->errorType = $errorType;
$this->hint = $hint; $this->hint = $hint;
$this->redirectUri = $redirectUri; $this->redirectUri = $redirectUri;
$this->payload = [
'error' => $errorType,
'message' => $message,
];
if ($hint !== null) {
$this->payload['hint'] = $hint;
}
}
/**
* Returns the current payload.
*
* @return array
*/
public function getPayload()
{
return $this->payload;
}
/**
* Updates the current payload.
*
* @param array $payload
*/
public function setPayload(array $payload)
{
$this->payload = $payload;
} }
/** /**
@ -213,21 +245,15 @@ class OAuthServerException extends \Exception
* *
* @param ResponseInterface $response * @param ResponseInterface $response
* @param bool $useFragment True if errors should be in the URI fragment instead of query string * @param bool $useFragment True if errors should be in the URI fragment instead of query string
* @param int $jsonOptions options passed to json_encode
* *
* @return ResponseInterface * @return ResponseInterface
*/ */
public function generateHttpResponse(ResponseInterface $response, $useFragment = false) public function generateHttpResponse(ResponseInterface $response, $useFragment = false, $jsonOptions = 0)
{ {
$headers = $this->getHttpHeaders(); $headers = $this->getHttpHeaders();
$payload = [ $payload = $this->getPayload();
'error' => $this->getErrorType(),
'message' => $this->getMessage(),
];
if ($this->hint !== null) {
$payload['hint'] = $this->hint;
}
if ($this->redirectUri !== null) { if ($this->redirectUri !== null) {
if ($useFragment === true) { if ($useFragment === true) {
@ -243,7 +269,7 @@ class OAuthServerException extends \Exception
$response = $response->withHeader($header, $content); $response = $response->withHeader($header, $content);
} }
$response->getBody()->write(json_encode($payload)); $response->getBody()->write(json_encode($payload, $jsonOptions));
return $response->withStatus($this->getHttpStatusCode()); return $response->withStatus($this->getHttpStatusCode());
} }