diff --git a/pom.xml b/pom.xml index 99f7439..c594d51 100644 --- a/pom.xml +++ b/pom.xml @@ -45,11 +45,13 @@ org.javawebstack orm 1.0.2 + provided org.javawebstack http-server 1.0.2 + provided org.junit.jupiter diff --git a/src/main/java/org/javawebstack/webutils/middleware/ModelBindCheckMiddleware.java b/src/main/java/org/javawebstack/webutils/middleware/ModelBindCheckMiddleware.java new file mode 100644 index 0000000..9bd79b3 --- /dev/null +++ b/src/main/java/org/javawebstack/webutils/middleware/ModelBindCheckMiddleware.java @@ -0,0 +1,33 @@ +package org.javawebstack.webutils.middleware; + +import org.javawebstack.httpserver.Exchange; +import org.javawebstack.httpserver.handler.RequestHandler; + +import java.util.function.BiFunction; + +public class ModelBindCheckMiddleware implements RequestHandler { + + private final BiFunction handler; + + public ModelBindCheckMiddleware() { + this(ModelBindCheckMiddleware::defaultHandler); + } + + public ModelBindCheckMiddleware(BiFunction handler) { + this.handler = handler; + } + + public Object handle(Exchange exchange) { + for (String key : exchange.getPathVariables().keySet()) { + if (exchange.getPathVariables().get(key) == null) + return handler.apply(exchange, key); + } + return null; + } + + private static Object defaultHandler(Exchange exchange, String key) { + exchange.status(404); + return "Not Found"; + } + +} diff --git a/src/main/java/org/javawebstack/webutils/middlewares/RateLimitMiddleware.java b/src/main/java/org/javawebstack/webutils/middleware/RateLimitMiddleware.java similarity index 97% rename from src/main/java/org/javawebstack/webutils/middlewares/RateLimitMiddleware.java rename to src/main/java/org/javawebstack/webutils/middleware/RateLimitMiddleware.java index 43afd36..4660b72 100644 --- a/src/main/java/org/javawebstack/webutils/middlewares/RateLimitMiddleware.java +++ b/src/main/java/org/javawebstack/webutils/middleware/RateLimitMiddleware.java @@ -1,9 +1,8 @@ -package org.javawebstack.webutils.middlewares; +package org.javawebstack.webutils.middleware; import org.javawebstack.httpserver.Exchange; import org.javawebstack.httpserver.handler.Middleware; -import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; diff --git a/src/main/java/org/javawebstack/webutils/middleware/SerializedResponseTransformer.java b/src/main/java/org/javawebstack/webutils/middleware/SerializedResponseTransformer.java deleted file mode 100644 index 1d40d78..0000000 --- a/src/main/java/org/javawebstack/webutils/middleware/SerializedResponseTransformer.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.javawebstack.webutils.middleware; - -import org.javawebstack.abstractdata.AbstractMapper; -import org.javawebstack.abstractdata.NamingPolicy; -import org.javawebstack.httpserver.Exchange; -import org.javawebstack.httpserver.transformer.response.ResponseTransformer; - -public class SerializedResponseTransformer implements ResponseTransformer { - - private final AbstractMapper mapper; - private boolean ignoreStrings; - - public SerializedResponseTransformer() { - this((new AbstractMapper()).setNamingPolicy(NamingPolicy.SNAKE_CASE)); - } - - public SerializedResponseTransformer(AbstractMapper mapper) { - this.ignoreStrings = false; - this.mapper = mapper; - } - - public SerializedResponseTransformer ignoreStrings() { - this.ignoreStrings = true; - return this; - } - - public String transform(Exchange exchange, Object object) { - if (object instanceof byte[]) { - return null; - } else { - if (this.ignoreStrings && object instanceof String) - return null; - String accept = exchange.header("Accept"); - - if (accept != null) { - switch (accept.toLowerCase()) { - case "application/x-yaml": - case "application/yaml": - case "text/yaml": - case "text/x-yaml": - exchange.contentType(accept); - return this.mapper.toAbstract(object).toYaml(); - case "application/x-www-form-urlencoded": - exchange.contentType(accept); - return this.mapper.toAbstract(object).toFormDataString(); - } - } - - exchange.contentType("application/json"); - return this.mapper.toAbstract(object).toJsonString(); - } - } -}