From f51628bebab7d9ff85272b328e448baeec8a42a8 Mon Sep 17 00:00:00 2001 From: Bryan Moffatt Date: Fri, 1 May 2020 13:29:56 +0100 Subject: [PATCH] Add support for APIGatwayV2 HTTP API --- aws-lambda-java-events/pom.xml | 6 ++ .../runtime/events/APIGatewayV2HTTPEvent.java | 87 +++++++++++++++++++ .../events/APIGatewayV2HTTPResponse.java | 35 ++++++++ 3 files changed, 128 insertions(+) create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPEvent.java create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPResponse.java diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml index 98d03e32..a33f3824 100644 --- a/aws-lambda-java-events/pom.xml +++ b/aws-lambda-java-events/pom.xml @@ -62,6 +62,12 @@ 1.18.12 provided + + org.projectlombok + lombok + 1.18.12 + provided + diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPEvent.java new file mode 100644 index 00000000..a45cbf81 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPEvent.java @@ -0,0 +1,87 @@ +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +package com.amazonaws.services.lambda.runtime.events; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Builder(setterPrefix = "with") +@Data +@NoArgsConstructor +public class APIGatewayV2HTTPEvent { + private String version; + private String routeKey; + private String rawPath; + private String rawQueryString; + private List cookies; + private Map headers; + private Map queryStringParameters; + private Map pathParameters; + private Map stageVariables; + private String Body; + private boolean isBase64Encoded; + private RequestContext requestContext; + + @AllArgsConstructor + @Builder(setterPrefix = "with") + @Data + @NoArgsConstructor + public static class RequestContext { + private String routeKey; + private String accountId; + private String stage; + private String apiId; + private String domainName; + private String domainPrefix; + private String time; + private long timeEpoch; + private Http http; + private Authorizer authorizer; + + @AllArgsConstructor + @Builder(setterPrefix = "with") + @Data + @NoArgsConstructor + public static class Authorizer { + private JWT jwt; + + @AllArgsConstructor + @Builder(setterPrefix = "with") + @Data + @NoArgsConstructor + public static class JWT { + private Map claims; + private List scopes; + } + } + + @AllArgsConstructor + @Builder(setterPrefix = "with") + @Data + @NoArgsConstructor + public static class Http { + private String method; + private String path; + private String protocol; + private String sourceIp; + private String userAgent; + } + } +} diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPResponse.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPResponse.java new file mode 100644 index 00000000..2bd81fad --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/APIGatewayV2HTTPResponse.java @@ -0,0 +1,35 @@ +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +package com.amazonaws.services.lambda.runtime.events; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Builder(setterPrefix = "with") +@Data +@NoArgsConstructor +public class APIGatewayV2HTTPResponse { + private int statusCode; + private Map headers; + private Map> multiValueHeaders; + private List cookies; + private String body; + private boolean isBase64Encoded; +}