From 93acb0730101312fc6d82d83650bc6322b59b611 Mon Sep 17 00:00:00 2001 From: Markus Fischer Date: Fri, 2 Oct 2015 14:29:16 +0200 Subject: [PATCH] errors: ensure response matches jsonapi spec Per http://jsonapi.org/format/1.0/#errors 'status' and 'code' must be of type string, if present. For completeness I added casts for 'detail' and 'title' too, just in case someone would pass an integer at a point. --- src/EchoIt/JsonApi/ErrorResponse.php | 6 +++++- src/EchoIt/JsonApi/MultiErrorResponse.php | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/EchoIt/JsonApi/ErrorResponse.php b/src/EchoIt/JsonApi/ErrorResponse.php index 891c67b..919aa56 100644 --- a/src/EchoIt/JsonApi/ErrorResponse.php +++ b/src/EchoIt/JsonApi/ErrorResponse.php @@ -20,7 +20,11 @@ public function __construct($httpStatusCode, $errorCode, $errorTitle, array $add { $data = [ 'errors' => [ array_merge( - [ 'status' => $httpStatusCode, 'code' => $errorCode, 'title' => $errorTitle ], + [ + 'status' => (string) $httpStatusCode, + 'code' => (string) $errorCode, + 'title' => (string) $errorTitle + ], $additionalAttrs ) ] ]; diff --git a/src/EchoIt/JsonApi/MultiErrorResponse.php b/src/EchoIt/JsonApi/MultiErrorResponse.php index 54bbb42..26306c6 100644 --- a/src/EchoIt/JsonApi/MultiErrorResponse.php +++ b/src/EchoIt/JsonApi/MultiErrorResponse.php @@ -27,7 +27,15 @@ public function __construct($httpStatusCode, $errorCode, $errorTitle, Validation foreach ($errors->get($field) as $message) { - $data['errors'][] = [ 'status' => $httpStatusCode, 'code' => $errorCode, 'title' => 'Validation Fail', 'detail' => $message, 'meta' => ['field' => $field] ]; + $data['errors'][] = [ + 'status' => (string) $httpStatusCode, + 'code' => (string) $errorCode, + 'title' => 'Validation Fail', + 'detail' => (string) $message, + 'meta' => [ + 'field' => $field + ] + ]; }