
org.pac4j.vertx.VertxWebContext Maven / Gradle / Ivy
The newest version!
package org.pac4j.vertx;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.Session;
import org.pac4j.core.context.Cookie;
import org.pac4j.core.context.WebContext;
import org.pac4j.core.context.session.SessionStore;
import org.pac4j.vertx.auth.Pac4jUser;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.InvalidParameterException;
import java.util.*;
import java.util.stream.Collectors;
/**
* WebContext implementation for Vert.x 3.
*
* @author Jeremy Prime
* @since 2.0.0
*/
public class VertxWebContext implements WebContext {
private final RoutingContext routingContext;
private final String method;
private final String serverName;
private final int serverPort;
private final String fullUrl;
private final String scheme;
private final String remoteAddress;
private final JsonObject headers;
private final JsonObject parameters;
private final Map mapParameters;
private final SessionStore sessionStore;
public VertxWebContext(final RoutingContext routingContext, final SessionStore sessionStore) {
final HttpServerRequest request = routingContext.request();
this.routingContext = routingContext;
this.method = request.method().toString();
this.sessionStore = sessionStore;
this.fullUrl = request.absoluteURI();
URI uri;
try {
uri = new URI(fullUrl);
} catch (URISyntaxException e) {
e.printStackTrace();
throw new InvalidParameterException("Request to invalid URL " + fullUrl + " while constructing VertxWebContext");
}
this.scheme = uri.getScheme();
this.serverName = uri.getHost();
this.serverPort = (uri.getPort() != -1) ? uri.getPort() : scheme.equals("http") ? 80 : 443;
this.remoteAddress = request.remoteAddress().toString();
headers = new JsonObject();
for (String name : request.headers().names()) {
headers.put(name, request.headers().get(name));
}
parameters = new JsonObject();
for (String name : request.params().names()) {
parameters.put(name, new JsonArray(Arrays.asList(request.params().getAll(name).toArray())));
}
for (String name : request.formAttributes().names()) {
parameters.put(name, new JsonArray(Arrays.asList(request.formAttributes().getAll(name).toArray())));
}
mapParameters = new HashMap<>();
for (String name : parameters.fieldNames()) {
JsonArray params = parameters.getJsonArray(name);
String[] values = new String[params.size()];
int i = 0;
for (Object o : params) {
values[i++] = (String) o;
}
mapParameters.put(name, values);
}
}
@Override
public Optional getRequestParameter(String name) {
JsonArray values = parameters.getJsonArray(name);
if (values != null && values.size() > 0) {
return Optional.ofNullable(values.getString(0));
}
return Optional.empty();
}
@Override
public Map getRequestParameters() {
return mapParameters;
}
@Override
public Optional
© 2015 - 2025 Weber Informatics LLC | Privacy Policy