| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace Libs;
- use React\Http\Message\Response;
- /**
- * Formato padrão de resposta da API.
- *
- * Toda resposta enviada ao frontend deve seguir esta estrutura:
- *
- * {
- * "status": "ok" | "failed",
- * "code": "S_OK" | "E_VALIDATE" | ...,
- * "message": "mensagem legível",
- * "data": { ... } // presente apenas quando houver dados
- * }
- *
- * Qualquer informação adicional retornada ao frontend deve ficar sempre dentro de "data".
- */
- final class Payload
- {
- /**
- * Monta o array padrão de resposta. "data" só é incluído quando não está vazio.
- */
- public static function build(string $status, string $code, string $message, $data = []): array
- {
- $response = [
- 'status' => $status,
- 'code' => $code,
- 'message' => $message,
- ];
- if (!empty($data)) {
- $response['data'] = $data;
- }
- return $response;
- }
- /**
- * Monta a resposta padrão já como Response JSON pronta para retorno no controller.
- */
- public static function json(string $status, string $code, string $message, $data = [], int $httpStatus = 200): Response
- {
- return Response::json(self::build($status, $code, $message, $data))->withStatus($httpStatus);
- }
- public static function ok($data = [], string $code = 'S_OK', string $message = 'Request ok.'): Response
- {
- return self::json('ok', $code, $message, $data);
- }
- public static function fail(string $message, $data = [], string $code = 'E_GENERIC', int $httpStatus = 400): Response
- {
- return self::json('failed', $code, $message, $data, $httpStatus);
- }
- }
|