
com.github.davidmoten.aws.helper.StandardRequestBodyPassThrough Maven / Gradle / Ivy
package com.github.davidmoten.aws.helper;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
public final class StandardRequestBodyPassThrough {
private final Map map;
private final Map context;
private final Map headers;
@SuppressWarnings("unchecked")
private StandardRequestBodyPassThrough(Map m) {
this.map = m==null? Collections.emptyMap():m;
this.context = (Map) params(map).get("context");
this.headers = getHeaders(map);
}
public static StandardRequestBodyPassThrough from(Map input) {
return new StandardRequestBodyPassThrough(input);
}
@SuppressWarnings("unchecked")
private static Map params(Map map) {
Map m = (Map) ((Map) map.get("params"));
if (m == null)
return Collections.emptyMap();
else
return m;
}
@SuppressWarnings("unchecked")
private static Map getHeaders(Map map) {
Map m = (Map) params(map).get("header");
if (m== null)
return Collections.emptyMap();
else {
return m.entrySet().stream()
.collect(Collectors.toMap(x -> x.getKey().toLowerCase(), x -> x.getValue()));
}
}
public Map headers() {
return headers;
}
public Optional header(String name) {
return Optional.ofNullable(headers.get(name));
}
@SuppressWarnings("unchecked")
public Map queryStringParameters() {
Map m = (Map) params(map).get("querystring");
if (m == null)
return Collections.emptyMap();
else
return m;
}
public Optional queryStringParameter(String key) {
return Optional.ofNullable(queryStringParameters().get(key));
}
@SuppressWarnings("unchecked")
public Map stageVariables() {
Map m = (Map) params(map).get("stage-variables");
if (m == null)
return Collections.emptyMap();
else
return m;
}
@Override
public String toString() {
return String.valueOf(map);
}
private Optional c(String key) {
if (context == null) {
return Optional.empty();
} else {
return Optional.ofNullable(context.get(key));
}
}
public Optional accountId() {
return c("account-id");
}
public Optional apiId() {
return c("api-id");
}
public Optional apiKey() {
return c("api-key");
}
public Optional authorizerPrincipalId() {
return c("authorizer-principal-id");
}
public Optional caller() {
return c("caller");
}
public Optional cognitoAuthenticationProvider() {
return c("cognito-authentication-provider");
}
public Optional cognitoAuthenticationType() {
return c("cognito-authentication-type");
}
public Optional cognitoIdentityPoolId() {
return c("cognito-identity-pool-id");
}
public Optional httpMethod() {
return c("http-method");
}
public Optional stage() {
return c("stage");
}
public Optional sourceIp() {
return c("source-ip");
}
public Optional user() {
return c("user");
}
public Optional userArn() {
return c("user-arn");
}
public Optional requestId() {
return c("request-id");
}
public Optional resourceId() {
return c("resource-id");
}
public Optional resourcePath() {
return c("resource-path");
}
public Optional stageVariables(String key) {
return Optional.ofNullable(stageVariables().get(key));
}
// {body-json={}, params={path={}, querystring={boo=2, hello=true},
// header={Accept=*/*, CloudFront-Forwarded-Proto=https,
// CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false,
// CloudFront-Is-SmartTV-Viewer=false,
// CloudFront-Is-Tablet-Viewer=false, CloudFront-Viewer-Country=AU,
// Host=w0ik4qs1c7.execute-api.ap-southeast-2.amazonaws.com,
// User-Agent=curl/7.35.0, Via=1.1
// 5672636208e8fb405fd765eca1216f8a.cloudfront.net (CloudFront),
// X-Amz-Cf-Id=bp5msOV06nJe1Ow27e6OMxRHnRcsMXgrRGoKW9cRgsg==,
// x-api-key=W,
// X-Forwarded-For=60.242.1,23, 54.24.12.34 X-Forwarded-Port=443,
// X-Forwarded-Proto=https}},
// stage-variables={function=get-craftpic-dev}, context={account-id=,
// api-id=w0ik4qs1c7, api-key=Wc
// authorizer-principal-id=, caller=, cognito-authentication-provider=,
// cognito-authentication-type=, cognito-identity-id=,
// cognito-identity-pool-id=, http-method=GET, stage=dev,
// source-ip=60.242.107.227, user=, user-agent=curl/7.35.0, user-arn=,
// request-id=8501b909-b7f2-11e6-b832-dhjkjhkjc3e75e7, resource-id=a10fd5,
// resource-path=/check}}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy