use of ratpack.util.Types in project ratpack by ratpack.
the class Pac4jAuthenticator method handle.
@Override
public void handle(Context ctx) throws Exception {
PathBinding pathBinding = ctx.getPathBinding();
String pastBinding = pathBinding.getPastBinding();
if (pastBinding.equals(path)) {
RatpackWebContext.from(ctx, true).flatMap(webContext -> {
SessionData sessionData = webContext.getSession();
return createClients(ctx, pathBinding).map(clients -> clients.findClient(webContext)).map(Types::<Client<Credentials, UserProfile>>cast).flatMap(client -> getProfile(webContext, client)).map(profile -> {
if (profile != null) {
sessionData.set(Pac4jSessionKeys.USER_PROFILE, profile);
}
Optional<String> originalUrl = sessionData.get(Pac4jSessionKeys.REQUESTED_URL);
sessionData.remove(Pac4jSessionKeys.REQUESTED_URL);
return originalUrl;
}).onError(t -> {
if (t instanceof RequiresHttpAction) {
webContext.sendResponse((RequiresHttpAction) t);
} else {
ctx.error(new TechnicalException("Failed to get user profile", t));
}
});
}).then(originalUrlOption -> {
ctx.redirect(originalUrlOption.orElse("/"));
});
} else {
createClients(ctx, pathBinding).then(clients -> {
Registry registry = Registry.singleLazy(Clients.class, () -> uncheck(() -> clients));
ctx.next(registry);
});
}
}
use of ratpack.util.Types in project ratpack by ratpack.
the class NcsaRequestLogger method log.
@Override
public void log(RequestOutcome outcome) {
if (!logger.isInfoEnabled()) {
return;
}
// TODO - use one string builder here and remove use of String.format()
Request request = outcome.getRequest();
SentResponse response = outcome.getResponse();
String responseSize = "-";
String contentLength = response.getHeaders().get(HttpHeaderConstants.CONTENT_LENGTH);
if (contentLength != null) {
responseSize = contentLength;
}
StringBuilder logLine = new StringBuilder().append(ncsaLogFormat(request.getRemoteAddress(), "-", request.maybeGet(UserId.class).map(Types::cast), request.getTimestamp(), request.getMethod(), request.getRawUri(), request.getProtocol(), outcome.getResponse().getStatus(), responseSize));
request.maybeGet(RequestId.class).ifPresent(id1 -> {
logLine.append(" id=");
logLine.append(id1);
});
logger.info(logLine.toString());
}
Aggregations