Skip to content

Commit

Permalink
Misc improvements to RestApi
Browse files Browse the repository at this point in the history
  • Loading branch information
bjorncs committed Mar 12, 2024
1 parent 3de0460 commit 76d9584
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
17 changes: 9 additions & 8 deletions container-core/src/main/java/com/yahoo/restapi/RestApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,11 @@

import javax.net.ssl.SSLSession;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.InetSocketAddress;
import java.security.Principal;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalLong;

/**
* Rest API routing and response serialization
Expand Down Expand Up @@ -149,6 +148,8 @@ interface RequestContext {
/** Scheme, domain and port, for the original request. <em>Use this only for generating resources links, not for custom routing!</em> */
// TODO: this needs to include path and query as well, to be useful for generating resource links that need not be rewritten.
HttpURL baseRequestURL();
/** Full URL of the request */
HttpURL url();
AclMapping.Action aclAction();
Optional<Principal> userPrincipal();
Principal userPrincipalOrThrow();
Expand All @@ -161,14 +162,14 @@ interface Parameters {
String getStringOrThrow(String name);
default Optional<Boolean> getBoolean(String name) { return getString(name).map(Boolean::valueOf);}
default boolean getBooleanOrThrow(String name) { return Boolean.parseBoolean(getStringOrThrow(name)); }
default OptionalLong getLong(String name) {
return getString(name).map(Long::parseLong).map(OptionalLong::of).orElseGet(OptionalLong::empty);
}
default Optional<Long> getLong(String name) { return getString(name).map(Long::parseLong); }
default long getLongOrThrow(String name) { return Long.parseLong(getStringOrThrow(name)); }
default OptionalDouble getDouble(String name) {
return getString(name).map(Double::parseDouble).map(OptionalDouble::of).orElseGet(OptionalDouble::empty);
}
default Optional<Double> getDouble(String name) { return getString(name).map(Double::parseDouble); }
default int getIntegerOrThrow(String name) { return Integer.parseInt(getStringOrThrow(name)); }
default Optional<Integer> getInteger(String name) { return getString(name).map(Integer::parseInt); }
default double getDoubleOrThrow(String name) { return Double.parseDouble(getStringOrThrow(name)); }
default BigDecimal getBigDecimalOrThrow(String name) { return new BigDecimal(getStringOrThrow(name)); }
default Optional<BigDecimal> getBigDecimal(String name) { return getString(name).map(BigDecimal::new); }
}

interface PathParameters extends Parameters {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,7 @@ private static class RequestContextImpl implements RestApi.RequestContext {
}
return HttpURL.from(URI.create(sb.toString()));
}
@Override public HttpURL url() { return HttpURL.from(request.getUri()); }
@Override public AclMapping.Action aclAction() { return aclAction; }
@Override public Optional<Principal> userPrincipal() {
return Optional.ofNullable(request.getJDiscRequest().getUserPrincipal());
Expand Down

0 comments on commit 76d9584

Please sign in to comment.