1package dev.rafex.ether.http.jetty12;
29import java.util.Collections;
33import java.util.TreeSet;
35import org.eclipse.jetty.server.Request;
36import org.eclipse.jetty.server.Response;
37import org.eclipse.jetty.util.Callback;
39import dev.rafex.ether.json.JsonCodec;
40import dev.rafex.ether.http.core.HttpExchange;
44 private final Request request;
45 private final Response response;
46 private final Callback callback;
47 private final Map<String, String> pathParams;
48 private final Map<String, List<String>> queryParams;
49 private final Set<String> allowedMethods;
52 public JettyHttpExchange(
final Request request,
final Response response,
final Callback callback,
53 final Map<String, String> pathParams,
final Map<String, List<String>> queryParams,
54 final Set<String> allowedMethods,
final JsonCodec jsonCodec) {
55 this.request = request;
56 this.response = response;
57 this.callback = callback;
58 this.pathParams = pathParams;
59 this.queryParams = queryParams;
60 this.allowedMethods = normalizeMethods(allowedMethods);
78 return request.getMethod();
83 return request.getHttpURI().getPath();
88 return pathParams.get(name);
93 final var values = queryParams.get(name);
94 if (values ==
null || values.isEmpty()) {
102 return queryParams.getOrDefault(name, List.of());
107 return Collections.unmodifiableMap(pathParams);
112 return Collections.unmodifiableMap(queryParams);
117 return Collections.unmodifiableSet(allowedMethods);
121 public void json(
final int status,
final Object body) {
122 apiResponses.json(response, callback, status, body);
126 public void text(
final int status,
final String body) {
127 apiResponses.text(response, callback, status, body);
132 apiResponses.noContent(response, callback, status);
137 response.getHeaders().put(
"Allow", String.join(
", ", allowedMethods));
143 response.getHeaders().put(
"Allow", String.join(
", ", allowedMethods));
147 private static Set<String> normalizeMethods(
final Set<String> methods) {
148 final var out =
new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
149 if (methods !=
null) {
150 for (
final var
method : methods) {
152 out.add(
method.trim().toUpperCase());
Map< String, List< String > > queryParams()
List< String > queryAll(final String name)
String pathParam(final String name)
String queryFirst(final String name)
Map< String, String > pathParams()
Set< String > allowedMethods()
void text(final int status, final String body)
void json(final int status, final Object body)
JettyHttpExchange(final Request request, final Response response, final Callback callback, final Map< String, String > pathParams, final Map< String, List< String > > queryParams, final Set< String > allowedMethods, final JsonCodec jsonCodec)
void noContent(final int status)
default void methodNotAllowed()