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

lambdify.apigateway.TokenAuthorizerContext Maven / Gradle / Ivy

The newest version!
package lambdify.apigateway;

import java.util.*;
import lombok.*;

@Data
public class TokenAuthorizerContext {

    String type;
    String authorizationToken;
    String methodArn;
    String httpMethod;

    Map headers;
    Map queryStringParameters;
    Map pathParameters;
    Map stageVariables;
    Map requestContext;

    public MethodArn getMethod(){
        val arnPartials = methodArn.split(":");
        val region = arnPartials[3];
        val awsAccountId = arnPartials[4];
        val apiGatewayArnPartials = arnPartials[5].split("/");
        val restApiId = apiGatewayArnPartials[0];
        val stage = apiGatewayArnPartials[1];
        val httpMethod = apiGatewayArnPartials[2];
        var resource = "";
        if (apiGatewayArnPartials.length > 3 ) {
            val tokens = Arrays.asList(Arrays.copyOfRange(apiGatewayArnPartials, 3, apiGatewayArnPartials.length));
            resource = String.join( "/", tokens );
        }
        return new MethodArn(region, awsAccountId, restApiId, stage, httpMethod, resource);
    }

    public AuthPolicy grantPermission(String principalId) {
        return grantPermission(principalId, null, null);
    }

    public AuthPolicy grantPermission(String principalId, Map context, String usageIdentifierKey ) {
        val method = getMethod();
        val policy = PolicyDocument.allowAllPolicy( method.region, method.awsAccountId, method.restApiId, method.stage);
        return new AuthPolicy( principalId, policy, context, usageIdentifierKey );
    }

    public AuthPolicy denyPermission(String principalId) {
        return denyPermission(principalId, null, null);
    }

    public AuthPolicy denyPermission(String principalId, Map context, String usageIdentifierKey ) {
        val method = getMethod();
        val policy = PolicyDocument.denyAllPolicy( method.region, method.awsAccountId, method.restApiId, method.stage);
        return new AuthPolicy( principalId, policy, context, usageIdentifierKey );
    }

    @Value public static class MethodArn {
        String region;
        String awsAccountId;
        String restApiId;
        String stage;
        String httpMethod;
        String resource;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy