/** * @param value Default value to use. * @return Get a char. */ default char charValue(final char value) { return toOptional(Character.class).orElse(value); }
@Override public String getRequestHeader(final String name) { return req.header(name).value(null); }
/** * @return Get a float when possible. */ default float floatValue() { return to(float.class); }
private static final GetValue param() { return (req, rsp, chain, param) -> { Mutant mutant = req.param(param.name); if (mutant.isSet() || param.optional) { return mutant.to(param.type); } try { return req.params().to(param.type); } catch (Err ex) { // force parsing return mutant.to(param.type); } }; } }
private Map<String, String[]> params(final Request req) { ImmutableMap.Builder<String, String[]> result = ImmutableMap.<String, String[]>builder(); req.params().toMap().forEach((name, value) -> { try { List<String> values = value.toList(); result.put(name, values.toArray(new String[values.size()])); } catch (Err ignored) { log.debug("ignoring HTTP param: " + name, ignored); } }); return result.build(); }
} else { String type = req.param("type").value("*"); MetricFilter filter = req.param("name").toOptional() .<MetricFilter> map(name -> (n, m) -> n.startsWith(name)) .orElse(MetricFilter.ALL); TimeUnit unit = TimeUnit.valueOf(req.param("unit").value("seconds").toUpperCase()); String rateUnitLabel = calculateRateUnit(unit, "ops"); double rateFactor = unit.toSeconds(1); double durationFactor = 1.0 / unit.toNanos(1); boolean showSamples = req.param("showSamples").booleanValue(false);
boolean allowMethod = req.header(AC_REQUEST_METHOD).toOptional() .map(cors::allowMethod) .orElse(false); List<String> headers = req.header(AC_REQUEST_HEADERS).toOptional().map(header -> Splitter.on(',').trimResults().omitEmptyStrings().splitToList(header) ).orElse(Collections.emptyList());
/** * @return Get list of values when possible. */ @Nonnull default List<String> toList() { return toList(String.class); }
})); envdata.put("request params", dump(() -> req.params().toMap()));
@Override public void handle(final Request req, final Response rsp) throws Exception { if (!rsp.header(ALLOW).isSet()) { Set<String> allow = new LinkedHashSet<>(); Set<String> methods = new LinkedHashSet<>(Route.METHODS); String path = req.path(); methods.remove(req.method()); for (String method : methods) { routes.stream() .filter(route -> route.matches(method, path, MediaType.all, MediaType.ALL).isPresent()) .forEach(route -> allow.add(route.method())); } rsp.header(ALLOW, Joiner.on(SEP).join(allow)) .length(0) .status(Status.OK); } }
} else { String type = req.param("type").value("*"); MetricFilter filter = req.param("name").toOptional() .<MetricFilter> map(name -> (n, m) -> n.startsWith(name)) .orElse(MetricFilter.ALL); TimeUnit unit = TimeUnit.valueOf(req.param("unit").value("seconds").toUpperCase()); String rateUnitLabel = calculateRateUnit(unit, "ops"); double rateFactor = unit.toSeconds(1); double durationFactor = 1.0 / unit.toNanos(1); boolean showSamples = req.param("showSamples").booleanValue(false);
boolean allowMethod = req.header(AC_REQUEST_METHOD).toOptional() .map(cors::allowMethod) .orElse(false); List<String> headers = req.header(AC_REQUEST_HEADERS).toOptional().map(header -> Splitter.on(',').trimResults().omitEmptyStrings().splitToList(header) ).orElse(Collections.emptyList());
private static Map<String, String[]> params(final Request req) { ImmutableMap.Builder<String, String[]> result = ImmutableMap.<String, String[]>builder(); req.params().toMap().forEach((name, value) -> { try { List<String> values = value.toList(); result.put(name, values.toArray(new String[values.size()])); } catch (Err ignored) { LoggerFactory.getLogger(Pac4jContext.class).debug("ignoring HTTP param: " + name, ignored); } }); return result.build(); } }
private static final GetValue param() { return (req, rsp, chain, param) -> { Mutant mutant = req.param(param.name); if (mutant.isSet() || param.optional) { return mutant.to(param.type); } try { return req.params().to(param.type); } catch (Err ex) { // force parsing return mutant.to(param.type); } }; } }
@Override public void handle(final Request req, final Response rsp) throws Throwable { String CRLF = "\r\n"; StringBuilder buffer = new StringBuilder("TRACE ").append(req.path()) .append(" ").append(req.protocol()); for (Entry<String, Mutant> entry : req.headers().entrySet()) { buffer.append(CRLF).append(entry.getKey()).append(": ") .append(entry.getValue().toList(String.class).stream().collect(Collectors.joining(", "))); } buffer.append(CRLF); rsp.type(MediaType.valueOf("message/http")); rsp.length(buffer.length()); rsp.send(buffer.toString()); }
})); envdata.put("request params", dump(() -> req.params().toMap()));
@Override public void handle(final Request req, final Response rsp) throws Throwable { if (compilationDone.get()) { if (req.param("assets.sync").isSet()) { onChange(StandardWatchEventKinds.ENTRY_MODIFY, basedir); } if (errors.size() > 0) { throw errors.values().iterator().next(); } } else { rsp.type(MediaType.html) .send("<!DOCTYPE html>\n" + "<html>\n" + "<head>\n" + "<meta charset=\"UTF-8\">\n" + "<meta http-equiv=\"refresh\" content=\"2\">\n" + "<title>Compiling assets</title>\n" + "</head>\n" + "<body>\n" + "Compiling assets, please wait...\n" + "</body>\n" + "</html>"); } }
/** * @param value Default value to use. * @return Get a long. */ default long longValue(final long value) { return toOptional(Long.class).orElse(value); }
private String profileID(final boolean useSession, final Request req) { return req.<String>ifGet(Auth.ID) .orElseGet(() -> useSession ? req.session().get(Auth.ID).value(null) : null); }
/** * @return Get a double when possible. */ default double doubleValue() { return to(double.class); }