diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ApiGatewayRequestIdentity.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ApiGatewayRequestIdentity.java index 89b1ea2a..520ebda0 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ApiGatewayRequestIdentity.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ApiGatewayRequestIdentity.java @@ -14,7 +14,6 @@ import com.amazonaws.serverless.proxy.RequestReader; - import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -28,6 +27,42 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class ApiGatewayRequestIdentity { + /** + * Creates an ApiGatewayRequestIdentity instance with default values based on a typical API Gateway request. + * + * @return A pre-configured ApiGatewayRequestIdentity instance + */ + public static ApiGatewayRequestIdentity getApiGatewayRequestIdentity() { + ApiGatewayRequestIdentity identity = new ApiGatewayRequestIdentity(); + // Set default values based on example API Gateway request + identity.setApiKey(null); + identity.setApiKeyId(null); + identity.setUserArn(null); + identity.setCognitoAuthenticationType(null); + identity.setCaller(null); + identity.setUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); + identity.setUser(null); + identity.setCognitoIdentityPoolId(null); + identity.setCognitoIdentityId(null); + identity.setCognitoAuthenticationProvider(null); + identity.setSourceIp("127.0.0.1"); + identity.setAccountId(null); + identity.setAccessKey(null); + return identity; + } + + /** + * Creates an ApiGatewayRequestIdentity instance with the specified source IP. + * + * @param sourceIp the source IP to set + * @return A pre-configured ApiGatewayRequestIdentity instance + */ + public static ApiGatewayRequestIdentity getApiGatewayRequestIdentity(String sourceIp) { + ApiGatewayRequestIdentity identity = getApiGatewayRequestIdentity(); + identity.setSourceIp(sourceIp); + return identity; + } + //------------------------------------------------------------- // Variables - Private //------------------------------------------------------------- diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/AwsProxyRequestContext.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/AwsProxyRequestContext.java index e7cb1bf6..f965930a 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/AwsProxyRequestContext.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/AwsProxyRequestContext.java @@ -14,7 +14,6 @@ import com.amazonaws.serverless.proxy.RequestReader; - import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -29,6 +28,48 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class AwsProxyRequestContext { + /** + * Creates an AwsProxyRequestContext instance with default values based on a typical API Gateway request. + * + * @return A pre-configured AwsProxyRequestContext instance + */ + public static AwsProxyRequestContext getAwsProxyRequestContext() { + AwsProxyRequestContext context = new AwsProxyRequestContext(); + + // Set default values based on typical API Gateway request + context.setAccountId("123456789012"); + context.setApiId("id"); + context.setResourceId("$default"); + context.setResourcePath("/my/path"); + context.setHttpMethod("POST"); + context.setRequestId("id"); + context.setExtendedRequestId(""); + context.setStage("$default"); + context.setPath("/my/path"); + context.setProtocol("HTTP/1.1"); + context.setRequestTimeEpoch(System.currentTimeMillis()); // Current time as reasonable default + + // Create and set identity with defaults (already includes sourceIp and userAgent) + context.setIdentity(ApiGatewayRequestIdentity.getApiGatewayRequestIdentity()); + + // Initialize authorizer + context.setAuthorizer(new ApiGatewayAuthorizerContext()); + + return context; + } + + /** + * Creates an AwsProxyRequestContext instance with the specified HTTP method. + * + * @param httpMethod the HTTP method to set + * @return A pre-configured AwsProxyRequestContext instance + */ + public static AwsProxyRequestContext getAwsProxyRequestContext(String httpMethod) { + AwsProxyRequestContext context = getAwsProxyRequestContext(); + context.setHttpMethod(httpMethod); + return context; + } + //------------------------------------------------------------- // Variables - Private //-------------------------------------------------------------