All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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