SuiteCRM-Core/Api/V8/Controller/BaseController.php
Dillon-Brown 8e4cc94994 Squashed 'public/legacy/' content from commit 817a12dc0
git-subtree-dir: public/legacy
git-subtree-split: 817a12dc0c30c189f56d5cb1f7dc37a9631bdbe3
2021-03-31 15:37:32 +01:00

51 lines
1.4 KiB
PHP

<?php
namespace Api\V8\Controller;
use Api\V8\JsonApi\Response\ErrorResponse;
use Slim\Http\Response as HttpResponse;
abstract class BaseController
{
const MEDIA_TYPE = 'application/vnd.api+json';
/**
* @param HttpResponse $httpResponse
* @param mixed $response
* @param integer $status
*
* @return HttpResponse
*/
public function generateResponse(
HttpResponse $httpResponse,
$response,
$status
) {
return $httpResponse
->withStatus($status)
->withHeader('Accept', static::MEDIA_TYPE)
->withHeader('Content-type', static::MEDIA_TYPE)
->write(
json_encode(
$response,
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
)
);
}
/**
* @param HttpResponse $httpResponse
* @param \Exception $exception
* @param integer $status
*
* @return HttpResponse
*/
public function generateErrorResponse(HttpResponse $httpResponse, \Exception $exception, $status)
{
$response = new ErrorResponse();
$response->setStatus($status);
$response->setDetail($exception->getMessage());
$response->setException($exception);
return $this->generateResponse($httpResponse, $response, $status);
}
}