amber-laravel/app/Http/Controllers/Controller.php
2024-07-24 16:13:16 +08:00

125 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\JsonResponse;
abstract class Controller
{
public function success($data = [], $status = 200): JsonResponse
{
return $this->apiResponse($data, $status);
}
public function apiResponse($data = [], $status = 200): JsonResponse
{
// if data is string, then it is error message
if (is_string($data)) {
$data = [
'message' => $data,
];
}
return response()->json($data, $status)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
public function created($message = 'Created'): JsonResponse
{
return $this->success($message, 201);
}
public function noContent($message = 'No content'): JsonResponse
{
return $this->success($message, 204);
}
public function badRequest($message = 'Bad request'): JsonResponse
{
return $this->error($message);
}
public function error($message = '', $code = 400): JsonResponse
{
return $this->apiResponse($message, $code);
}
public function serviceUnavailable($message = 'Service unavailable'): JsonResponse
{
return $this->error($message, 503);
}
public function forbidden($message = 'Forbidden'): JsonResponse
{
return $this->error($message, 403);
}
public function notFound($message = 'Not found'): JsonResponse
{
return $this->error($message, 404);
}
public function methodNotAllowed($message = 'Method not allowed'): JsonResponse
{
return $this->error($message, 405);
}
public function tooManyRequests($message = 'Too many requests'): JsonResponse
{
return $this->error($message, 429);
}
public function serverError($message = 'Server error'): JsonResponse
{
return $this->error($message, 500);
}
public function failed($message = 'Failed', $code = 400): JsonResponse
{
return $this->apiResponse($message, $code);
}
public function unauthorized($message = 'Unauthorized'): JsonResponse
{
return $this->error($message, 401);
}
public function accepted($message = 'Accepted'): JsonResponse
{
return $this->success($message, 202);
}
public function updated(mixed $message = 'Updated'): JsonResponse
{
if ($message instanceof Model) {
$message = $message->getChanges();
}
return $this->success($message);
}
public function deleted($message = 'Deleted'): JsonResponse
{
return $this->success($message, 204);
}
public function notAllowed($message = 'Not allowed'): JsonResponse
{
return $this->error($message, 405);
}
public function conflict($message = 'Conflict'): JsonResponse
{
return $this->error($message, 409);
}
public function notAcceptable($message = 'Not acceptable'): JsonResponse
{
return $this->error($message, 406);
}
public function preconditionFailed($message = 'Precondition failed'): JsonResponse
{
return $this->error($message, 412);
}
}