1package dev.rafex.ether.http.jetty12;
29import java.time.Clock;
30import java.util.LinkedHashMap;
31import java.util.Objects;
33import org.eclipse.jetty.server.Response;
34import org.eclipse.jetty.util.Callback;
36import dev.rafex.ether.json.JsonCodec;
37import dev.rafex.ether.http.core.HttpError;
42 private final Clock clock;
45 this(jsonCodec, Clock.systemUTC());
50 this.clock = Objects.requireNonNull(clock);
53 public void notFound(
final Response response,
final Callback callback) {
54 error(response, callback, 404,
"not_found",
null,
"resource not found",
null);
57 public void notFound(
final Response response,
final Callback callback,
final String path) {
58 error(response, callback, 404,
"not_found",
null,
"resource not found", path);
61 public void badRequest(
final Response response,
final Callback callback,
final String message) {
62 error(response, callback, 400,
"bad_request",
"bad_request", message,
null);
65 public void unauthorized(
final Response response,
final Callback callback,
final String code) {
66 error(response, callback, 401,
"unauthorized", code,
null,
null);
69 public void forbidden(
final Response response,
final Callback callback,
final String code) {
70 error(response, callback, 403,
"forbidden", code,
null,
null);
73 public void internalServerError(
final Response response,
final Callback callback,
final String message) {
74 error(response, callback, 500,
"internal_server_error",
"internal_error", message,
null);
77 public void error(
final Response response,
final Callback callback,
final HttpError mapped) {
78 error(response, callback, mapped,
null);
81 public void error(
final Response response,
final Callback callback,
final HttpError mapped,
final String path) {
86 error(response, callback, mapped.status(), mapped.code(),
null, mapped.message(), path);
89 public void error(
final Response response,
final Callback callback,
final int status,
final String
error,
91 error(response, callback, status,
error, code,
null,
null);
94 public void error(
final Response response,
final Callback callback,
final int status,
final String
error,
95 final String code,
final String message) {
96 error(response, callback, status,
error, code, message,
null);
99 public void error(
final Response response,
final Callback callback,
final int status,
final String
error,
100 final String code,
final String message,
final String path) {
101 final var payload =
new LinkedHashMap<String, Object>();
102 payload.put(
"error", normalizeError(
error));
103 if (code !=
null && !code.isBlank()) {
104 payload.put(
"code", code);
106 if (message !=
null && !message.isBlank()) {
107 payload.put(
"message", message);
109 if (path !=
null && !path.isBlank()) {
110 payload.put(
"path", path);
112 payload.put(
"timestamp", clock.instant().toString());
113 responses.json(response, callback, status, payload);
116 private static String normalizeError(
final String
error) {
void error(final Response response, final Callback callback, final HttpError mapped)
void badRequest(final Response response, final Callback callback, final String message)
JettyApiErrorResponses(final JsonCodec jsonCodec, final Clock clock)
void error(final Response response, final Callback callback, final int status, final String error, final String code, final String message)
void unauthorized(final Response response, final Callback callback, final String code)
void notFound(final Response response, final Callback callback)
void error(final Response response, final Callback callback, final HttpError mapped, final String path)
void notFound(final Response response, final Callback callback, final String path)
void error(final Response response, final Callback callback, final int status, final String error, final String code, final String message, final String path)
JettyApiErrorResponses(final JsonCodec jsonCodec)
void internalServerError(final Response response, final Callback callback, final String message)
void forbidden(final Response response, final Callback callback, final String code)
void error(final Response response, final Callback callback, final int status, final String error, final String code)