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

lambdify.apigateway.Request Maven / Gradle / Ivy

package lambdify.apigateway;

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

/**
 * Represents an API Gateway request.
 */
@Data
public class Request
{
	String resource;
	String path;
	String httpMethod;
	Map headers;
	Map queryStringParameters;
	Map pathParameters;
	Map stageVariables;
	RequestContext requestContext;
	String body;
	boolean isBase64Encoded;

	@Setter transient Serializer serializer;

	public String getContentType(){
		return getHeaders().get( "content-type" );
	}

	public Map getHeaders(){
		if ( headers == null )
			headers = new HashMap<>();
		return headers;
	}

	public  T getHeader( String key, Class clazz ) {
		val value = getHeaders().get( key );
		return Config.INSTANCE.paramReader().convert( value, clazz );
	}

	public Map getQueryStringsParameters(){
		if ( queryStringParameters == null )
			queryStringParameters = new HashMap<>();
		return queryStringParameters;
	}

	public  T getQueryParam( String key, Class clazz ) {
		val value = getQueryStringParameters().get( key );
		return Config.INSTANCE.paramReader().convert( value, clazz );
	}

	public Map getPathParameters(){
		if ( pathParameters == null )
			pathParameters = new HashMap<>();
		return pathParameters;
	}

	public  T getPathParam( String key, Class clazz ) {
		val value = getPathParameters().get( key );
		return Config.INSTANCE.paramReader().convert( value, clazz );
	}

	public Map getStageVariables(){
		if ( stageVariables == null )
			stageVariables = new HashMap<>();
		return stageVariables;
	}

	public  T getStageParam( String key, Class clazz ) {
		val value = getStageVariables().get( key );
		return Config.INSTANCE.paramReader().convert( value, clazz );
	}

	public  T getBodyAs( Class type ) {
		if ( serializer == null )
			throw new RuntimeException( "Could not found a valid serializer for this request." );
		return serializer.toObject( getBody(), type, isBase64Encoded );
	}

	@Data
	public static class RequestContext {
		String apiId;
		String accountId;
		Map authorizer;
		Map error;
		RequestContextIdentity identity;
		String path;
		String resourceId;
		String stage;
		String requestId;
		String resourcePath;
		String httpMethod;
	}

	@Data
	public static class RequestContextIdentity {
		String accountId;
		String apiKey;
		String apiKeyId;
		String caller;
		String cognitoIdentityPoolId;
		String cognitoIdentityId;
		String cognitoAuthenticationType;
		String cognitoAuthenticationProvider;
		String sourceIp;
		String userArn;
		String userAgent;
		String user;
	}
}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy