From 62da1b139b50ea91a4da5682e1226aa9dcfc2a98 Mon Sep 17 00:00:00 2001 From: chirag729 Date: Thu, 3 Jun 2021 19:57:07 +0100 Subject: [PATCH 1/2] added AwsApiGatewayEventRequestContextAuthorizer and AwsApiGatewayEventRequestContextAuthorizerClaims to AwsApiGatewayEvent --- data/apigateway_event.json | 17 ++++++- lib/events/apigateway_event.dart | 82 +++++++++++++++++++++++++----- lib/events/apigateway_event.g.dart | 56 ++++++++++++++++++++ test/apigateway_event_test.dart | 4 +- 4 files changed, 145 insertions(+), 14 deletions(-) diff --git a/data/apigateway_event.json b/data/apigateway_event.json index ab04d225..6e5df332 100644 --- a/data/apigateway_event.json +++ b/data/apigateway_event.json @@ -42,7 +42,22 @@ }, "resourcePath": "/{proxy+}", "httpMethod": "POST", - "apiId": "wt6mne2s9k" + "apiId": "wt6mne2s9k", + "authorizer": { + "claims": { + "sub": "123456789", + "aud": "", + "email_verified": "", + "event_id": "", + "token_use": "", + "iss": "", + "cognito:username": "", + "name": "test", + "exp": "", + "ist": "", + "email": "example@test.com" + } + } }, "body": "{\"foo\":\"bar\"}", "resource": "/{proxy+}", diff --git a/lib/events/apigateway_event.dart b/lib/events/apigateway_event.dart index c79baacb..6eff1421 100644 --- a/lib/events/apigateway_event.dart +++ b/lib/events/apigateway_event.dart @@ -1,5 +1,5 @@ -import 'dart:io'; import 'dart:convert'; +import 'dart:io'; import 'package:aws_lambda_dart_runtime/runtime/event.dart'; import 'package:json_annotation/json_annotation.dart'; @@ -104,8 +104,7 @@ class AwsApiGatewayEvent extends Event { /// Request Context ... final AwsApiGatewayEventRequestContext? requestContext; - factory AwsApiGatewayEvent.fromJson(Map json) => - _$AwsApiGatewayEventFromJson(json); + factory AwsApiGatewayEvent.fromJson(Map json) => _$AwsApiGatewayEventFromJson(json); Map toJson() => _$AwsApiGatewayEventToJson(this); @@ -235,12 +234,13 @@ class AwsApiGatewayEventRequestContext { @JsonKey() final String? apiId; - factory AwsApiGatewayEventRequestContext.fromJson( - Map json) => + @JsonKey() + final AwsApiGatewayEventRequestContextAuthorizer? authorizer; + + factory AwsApiGatewayEventRequestContext.fromJson(Map json) => _$AwsApiGatewayEventRequestContextFromJson(json); - Map toJson() => - _$AwsApiGatewayEventRequestContextToJson(this); + Map toJson() => _$AwsApiGatewayEventRequestContextToJson(this); const AwsApiGatewayEventRequestContext( {this.accountId, @@ -249,7 +249,8 @@ class AwsApiGatewayEventRequestContext { this.requestId, this.resourcePath, this.httpMethod, - this.apiId}); + this.apiId, + this.authorizer}); } /// API Gateway Event Identity @@ -288,12 +289,10 @@ class AwsApiGatewayEventRequestContextIdentity { @JsonKey() final String? user; - factory AwsApiGatewayEventRequestContextIdentity.fromJson( - Map json) => + factory AwsApiGatewayEventRequestContextIdentity.fromJson(Map json) => _$AwsApiGatewayEventRequestContextIdentityFromJson(json); - Map toJson() => - _$AwsApiGatewayEventRequestContextIdentityToJson(this); + Map toJson() => _$AwsApiGatewayEventRequestContextIdentityToJson(this); const AwsApiGatewayEventRequestContextIdentity( {this.cognitoIdentityPoolId, @@ -308,3 +307,62 @@ class AwsApiGatewayEventRequestContextIdentity { this.userAgent, this.userArn}); } + +/// API Gateway Event Request Context Authorizer +@JsonSerializable() +class AwsApiGatewayEventRequestContextAuthorizer { + @JsonKey() + final AwsApiGatewayEventRequestContextAuthorizerClaims? claims; + + factory AwsApiGatewayEventRequestContextAuthorizer.fromJson(Map json) => + _$AwsApiGatewayEventRequestContextAuthorizerFromJson(json); + + Map toJson() => _$AwsApiGatewayEventRequestContextAuthorizerToJson(this); + + const AwsApiGatewayEventRequestContextAuthorizer(this.claims); +} + +/// API Gateway Event Request Context Authorizer Claims +@JsonSerializable() +class AwsApiGatewayEventRequestContextAuthorizerClaims { + @JsonKey() + final String? sub; + + @JsonKey() + final String? aud; + + @JsonKey() + final String? email_verified; + + @JsonKey() + final String? event_id; + + @JsonKey() + final String? token_use; + + @JsonKey() + final String? iss; + + @JsonKey(name: 'cognito:username') + final String? cognito_username; + + @JsonKey() + final String? name; + + @JsonKey() + final String? exp; + + @JsonKey() + final String? iat; + + @JsonKey() + final String? email; + + factory AwsApiGatewayEventRequestContextAuthorizerClaims.fromJson(Map json) => + _$AwsApiGatewayEventRequestContextAuthorizerClaimsFromJson(json); + + Map toJson() => _$AwsApiGatewayEventRequestContextAuthorizerClaimsToJson(this); + + const AwsApiGatewayEventRequestContextAuthorizerClaims(this.sub, this.aud, this.email_verified, this.event_id, + this.token_use, this.iss, this.cognito_username, this.name, this.exp, this.iat, this.email); +} diff --git a/lib/events/apigateway_event.g.dart b/lib/events/apigateway_event.g.dart index e1496487..b54981e2 100644 --- a/lib/events/apigateway_event.g.dart +++ b/lib/events/apigateway_event.g.dart @@ -97,6 +97,10 @@ AwsApiGatewayEventRequestContext _$AwsApiGatewayEventRequestContextFromJson( resourcePath: json['resourcePath'] as String?, httpMethod: json['httpMethod'] as String?, apiId: json['apiId'] as String?, + authorizer: json['authorizer'] == null + ? null + : AwsApiGatewayEventRequestContextAuthorizer.fromJson( + json['authorizer'] as Map), ); } @@ -110,6 +114,7 @@ Map _$AwsApiGatewayEventRequestContextToJson( 'resourcePath': instance.resourcePath, 'httpMethod': instance.httpMethod, 'apiId': instance.apiId, + 'authorizer': instance.authorizer, }; AwsApiGatewayEventRequestContextIdentity @@ -146,3 +151,54 @@ Map _$AwsApiGatewayEventRequestContextIdentityToJson( 'userAgent': instance.userAgent, 'user': instance.user, }; + +AwsApiGatewayEventRequestContextAuthorizer + _$AwsApiGatewayEventRequestContextAuthorizerFromJson( + Map json) { + return AwsApiGatewayEventRequestContextAuthorizer( + json['claims'] == null + ? null + : AwsApiGatewayEventRequestContextAuthorizerClaims.fromJson( + json['claims'] as Map), + ); +} + +Map _$AwsApiGatewayEventRequestContextAuthorizerToJson( + AwsApiGatewayEventRequestContextAuthorizer instance) => + { + 'claims': instance.claims, + }; + +AwsApiGatewayEventRequestContextAuthorizerClaims + _$AwsApiGatewayEventRequestContextAuthorizerClaimsFromJson( + Map json) { + return AwsApiGatewayEventRequestContextAuthorizerClaims( + json['sub'] as String?, + json['aud'] as String?, + json['email_verified'] as String?, + json['event_id'] as String?, + json['token_use'] as String?, + json['iss'] as String?, + json['cognito:username'] as String?, + json['name'] as String?, + json['exp'] as String?, + json['iat'] as String?, + json['email'] as String?, + ); +} + +Map _$AwsApiGatewayEventRequestContextAuthorizerClaimsToJson( + AwsApiGatewayEventRequestContextAuthorizerClaims instance) => + { + 'sub': instance.sub, + 'aud': instance.aud, + 'email_verified': instance.email_verified, + 'event_id': instance.event_id, + 'token_use': instance.token_use, + 'iss': instance.iss, + 'cognito:username': instance.cognito_username, + 'name': instance.name, + 'exp': instance.exp, + 'iat': instance.iat, + 'email': instance.email, + }; diff --git a/test/apigateway_event_test.dart b/test/apigateway_event_test.dart index 71be7e13..27a6aad1 100644 --- a/test/apigateway_event_test.dart +++ b/test/apigateway_event_test.dart @@ -1,6 +1,6 @@ +import 'dart:convert'; import 'dart:io'; import 'dart:io' show File; -import 'dart:convert'; import 'package:aws_lambda_dart_runtime/aws_lambda_dart_runtime.dart'; import 'package:test/test.dart'; @@ -28,6 +28,8 @@ void main() { expect(event.requestContext!.resourcePath, equals('/{proxy+}')); expect(event.headers!.raw['Accept-Encoding'], equals('gzip, deflate, lzma, sdch, br')); + expect(event.requestContext!.authorizer!.claims!.email, + equals('example@test.com')); }); test('factory creates event with default values', () { final response = AwsApiGatewayResponse.fromJson({}); From dd4034edd2adeb6e0ceee64951e1d6cf12286384 Mon Sep 17 00:00:00 2001 From: chirag729 Date: Thu, 10 Jun 2021 15:25:40 +0100 Subject: [PATCH 2/2] formatting --- lib/events/apigateway_event.dart | 43 +++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/events/apigateway_event.dart b/lib/events/apigateway_event.dart index 6eff1421..986e3607 100644 --- a/lib/events/apigateway_event.dart +++ b/lib/events/apigateway_event.dart @@ -104,7 +104,8 @@ class AwsApiGatewayEvent extends Event { /// Request Context ... final AwsApiGatewayEventRequestContext? requestContext; - factory AwsApiGatewayEvent.fromJson(Map json) => _$AwsApiGatewayEventFromJson(json); + factory AwsApiGatewayEvent.fromJson(Map json) => + _$AwsApiGatewayEventFromJson(json); Map toJson() => _$AwsApiGatewayEventToJson(this); @@ -237,10 +238,12 @@ class AwsApiGatewayEventRequestContext { @JsonKey() final AwsApiGatewayEventRequestContextAuthorizer? authorizer; - factory AwsApiGatewayEventRequestContext.fromJson(Map json) => + factory AwsApiGatewayEventRequestContext.fromJson( + Map json) => _$AwsApiGatewayEventRequestContextFromJson(json); - Map toJson() => _$AwsApiGatewayEventRequestContextToJson(this); + Map toJson() => + _$AwsApiGatewayEventRequestContextToJson(this); const AwsApiGatewayEventRequestContext( {this.accountId, @@ -289,10 +292,12 @@ class AwsApiGatewayEventRequestContextIdentity { @JsonKey() final String? user; - factory AwsApiGatewayEventRequestContextIdentity.fromJson(Map json) => + factory AwsApiGatewayEventRequestContextIdentity.fromJson( + Map json) => _$AwsApiGatewayEventRequestContextIdentityFromJson(json); - Map toJson() => _$AwsApiGatewayEventRequestContextIdentityToJson(this); + Map toJson() => + _$AwsApiGatewayEventRequestContextIdentityToJson(this); const AwsApiGatewayEventRequestContextIdentity( {this.cognitoIdentityPoolId, @@ -314,10 +319,12 @@ class AwsApiGatewayEventRequestContextAuthorizer { @JsonKey() final AwsApiGatewayEventRequestContextAuthorizerClaims? claims; - factory AwsApiGatewayEventRequestContextAuthorizer.fromJson(Map json) => + factory AwsApiGatewayEventRequestContextAuthorizer.fromJson( + Map json) => _$AwsApiGatewayEventRequestContextAuthorizerFromJson(json); - Map toJson() => _$AwsApiGatewayEventRequestContextAuthorizerToJson(this); + Map toJson() => + _$AwsApiGatewayEventRequestContextAuthorizerToJson(this); const AwsApiGatewayEventRequestContextAuthorizer(this.claims); } @@ -358,11 +365,23 @@ class AwsApiGatewayEventRequestContextAuthorizerClaims { @JsonKey() final String? email; - factory AwsApiGatewayEventRequestContextAuthorizerClaims.fromJson(Map json) => + factory AwsApiGatewayEventRequestContextAuthorizerClaims.fromJson( + Map json) => _$AwsApiGatewayEventRequestContextAuthorizerClaimsFromJson(json); - Map toJson() => _$AwsApiGatewayEventRequestContextAuthorizerClaimsToJson(this); - - const AwsApiGatewayEventRequestContextAuthorizerClaims(this.sub, this.aud, this.email_verified, this.event_id, - this.token_use, this.iss, this.cognito_username, this.name, this.exp, this.iat, this.email); + Map toJson() => + _$AwsApiGatewayEventRequestContextAuthorizerClaimsToJson(this); + + const AwsApiGatewayEventRequestContextAuthorizerClaims( + this.sub, + this.aud, + this.email_verified, + this.event_id, + this.token_use, + this.iss, + this.cognito_username, + this.name, + this.exp, + this.iat, + this.email); }