Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new API Gateway Authorizer types, deprecating old ones #102

Merged
merged 1 commit into from
Mar 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 63 additions & 45 deletions src/main/scala/net/exoego/facade/aws_lambda/apigateway.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,56 @@ import scala.scalajs.js.annotation.{JSBracketAccess, JSName}
import scala.scalajs.js.|

@js.native
trait APIGatewayEventRequestContext extends js.Object {
var accountId: String = js.native
var apiId: String = js.native
var authorizer: js.UndefOr[AuthResponseContext | Null] = js.native
var connectedAt: js.UndefOr[Double] = js.native
var connectionId: js.UndefOr[String] = js.native
var domainName: js.UndefOr[String] = js.native
var domainPrefix: js.UndefOr[String] = js.native
var eventType: js.UndefOr[String] = js.native
var extendedRequestId: js.UndefOr[String] = js.native
var protocol: String = js.native
var httpMethod: String = js.native
var identity: APIGatewayEventRequestContext.Identity = js.native
var messageDirection: js.UndefOr[String] = js.native
var messageId: js.UndefOr[String | Null] = js.native
var path: String = js.native
var stage: String = js.native
var requestId: String = js.native
var requestTime: js.UndefOr[String] = js.native
var requestTimeEpoch: Double = js.native
var resourceId: String = js.native
var resourcePath: String = js.native
var routeKey: js.UndefOr[String] = js.native
trait APIGatewayAuthorizerResultContext extends js.Object {
@JSBracketAccess
def apply(key: String): js.UndefOr[String | Double | Boolean] = js.native
}

@js.native
trait APIGatewayEventDefaultAuthorizerContext extends js.Object {
@JSBracketAccess
def apply(key: String): js.UndefOr[js.Any] = js.native
}

trait APIGatewayEventRequestContextWithAuthorizer[TAuthorizerContext]
extends js.Object {
var accountId: String
var apiId: String
var authorizer: TAuthorizerContext
var connectedAt: js.UndefOr[Double]
var connectionId: js.UndefOr[String]
var domainName: js.UndefOr[String]
var domainPrefix: js.UndefOr[String]
var eventType: js.UndefOr[String]
var extendedRequestId: js.UndefOr[String]
var protocol: String
var httpMethod: String
var identity: APIGatewayEventIdentity
var messageDirection: js.UndefOr[String]
var messageId: js.UndefOr[String | Null]
var path: String
var stage: String
var requestId: String
var requestTime: js.UndefOr[String]
var requestTimeEpoch: Double
var resourceId: String
var resourcePath: String
var routeKey: js.UndefOr[String]
}

trait APIGatewayEventRequestContext
extends APIGatewayEventRequestContextWithAuthorizer[
js.UndefOr[AuthResponseContext | Null]
]

object APIGatewayEventRequestContext {
@deprecated("Use new APIGatewayEventRequestContext{}", "0.7.0")
def apply(
accountId: String,
apiId: String,
protocol: String,
httpMethod: String,
identity: APIGatewayEventRequestContext.Identity,
identity: APIGatewayEventIdentity,
path: String,
stage: String,
requestId: String,
Expand Down Expand Up @@ -104,24 +122,10 @@ object APIGatewayEventRequestContext {
_obj$.asInstanceOf[APIGatewayEventRequestContext]
}

@js.native
trait Identity extends js.Object {
var accessKey: String | Null = js.native
var accountId: String | Null = js.native
var apiKey: String | Null = js.native
var apiKeyId: String | Null = js.native
var caller: String | Null = js.native
var cognitoAuthenticationProvider: String | Null = js.native
var cognitoAuthenticationType: String | Null = js.native
var cognitoIdentityId: String | Null = js.native
var cognitoIdentityPoolId: String | Null = js.native
var principalOrgId: String | Null = js.native
var sourceIp: String = js.native
var user: String | Null = js.native
var userAgent: String | Null = js.native
var userArn: String | Null = js.native
}
@deprecated("Use APIGatewayEventIdentity instead.", "0.7.0")
type Identity = APIGatewayEventIdentity

@deprecated("Use APIGatewayEventIdentity instead.", "0.7.0")
object Identity {
def apply(
sourceIp: String,
Expand Down Expand Up @@ -162,13 +166,27 @@ object APIGatewayEventRequestContext {
}
}

trait APIGatewayEventIdentity extends js.Object {
var accessKey: String | Null
var accountId: String | Null
var apiKey: String | Null
var apiKeyId: String | Null
var caller: String | Null
var cognitoAuthenticationProvider: String | Null
var cognitoAuthenticationType: String | Null
var cognitoIdentityId: String | Null
var cognitoIdentityPoolId: String | Null
var principalOrgId: String | Null
var sourceIp: String
var user: String | Null
var userAgent: String | Null
var userArn: String | Null
}

@js.native
trait AuthResponseContext extends js.Object {
trait AuthResponseContext extends APIGatewayEventDefaultAuthorizerContext {
var claims: js.UndefOr[AuthResponseContext.CognitoUserPoolAuthorizerEvent] =
js.native

@JSBracketAccess
def apply(key: String): js.UndefOr[js.Any] = js.native
}

object AuthResponseContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,45 @@ package net.exoego.facade.aws_lambda
import scala.scalajs.js
import scala.scalajs.js.|

trait APIGatewayTokenAuthorizerEvent extends js.Object {
var `type`: String
var methodArn: String
var authorizationToken: String
}

trait APIGatewayRequestAuthorizerEvent extends js.Object {
var `type`: String
var resource: String
var path: String
var httpMethod: String
var headers: js.Dictionary[String] | Null
var multiValueHeaders: js.Dictionary[js.Array[String]] | Null
var pathParameters: js.Dictionary[String] | Null
var queryStringParameters: js.Dictionary[String] | Null
var multiValueQueryStringParameters: js.Dictionary[js.Array[String]] | Null
var stageVariables: js.Dictionary[String] | Null
var requestContext: APIGatewayEventRequestContextWithAuthorizer[Unit]
var domainName: String
var apiId: String
}

trait APIGatewayAuthorizerResult extends js.Object {
var principalId: String
var policyDocument: PolicyDocument
var context: js.UndefOr[APIGatewayAuthorizerResultContext | Null]
var usageIdentifierKey: js.UndefOr[String | Null]
}

trait APIGatewayAuthorizerWithContextResult[
TAuthorizerContext <: APIGatewayAuthorizerResultContext
] extends js.Object {
var principalId: String
var policyDocument: PolicyDocument
var context: TAuthorizerContext
var usageIdentifierKey: js.UndefOr[String | Null]
}

@deprecated("Use APIGatewayAuthorizerEvent or a subtype", "0.7.0")
@js.native
trait CustomAuthorizerEvent extends js.Object {
var `type`: String = js.native
Expand All @@ -21,12 +60,15 @@ trait CustomAuthorizerEvent extends js.Object {
: js.UndefOr[js.Dictionary[js.Array[String]] | Null] = js.native
var stageVariables: js.UndefOr[CustomAuthorizerEvent.StageVariables] =
js.native
var requestContext: js.UndefOr[APIGatewayEventRequestContext] = js.native
var requestContext: js.UndefOr[APIGatewayEventRequestContextWithAuthorizer[
APIGatewayEventDefaultAuthorizerContext
]] = js.native
var domainName: js.UndefOr[String] = js.native
var apiId: js.UndefOr[String] = js.native
}

object CustomAuthorizerEvent {
@deprecated("Use APIGatewayAuthorizerEvent or a subtype", "0.7.0")
def apply(
`type`: String,
methodArn: String,
Expand Down Expand Up @@ -100,15 +142,8 @@ object CustomAuthorizerEvent {
type MultiValueQueryStringParameters = js.Dictionary[js.Array[String]]
}

@js.native
trait CustomAuthorizerResult extends js.Object {
var principalId: String = js.native
var policyDocument: PolicyDocument = js.native
var context: js.UndefOr[AuthResponseContext] = js.native
var usageIdentifierKey: js.UndefOr[String] = js.native
}

object CustomAuthorizerResult {
@deprecated("Use APIGatewayAuthorizerResult", "0.7.0")
def apply(
principalId: String,
policyDocument: PolicyDocument,
Expand Down
39 changes: 37 additions & 2 deletions src/main/scala/net/exoego/facade/aws_lambda/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@ package object aws_lambda {
type AsyncCloudWatchLogsHandler = AsyncHandler[CloudWatchLogsEvent, Unit]

// apigateway-authorizer
type AuthResponse = CustomAuthorizerResult
type AuthResponse = APIGatewayAuthorizerResult
@deprecated("Use APIGatewayAuthorizerHandler or a subtype", "0.7.0")
type CustomAuthorizerHandler =
Handler[CustomAuthorizerEvent, CustomAuthorizerResult]
Handler[CustomAuthorizerEvent, APIGatewayAuthorizerResult]
@deprecated("Use AsumcAPIGatewayAuthorizerHandler or a subtype", "0.7.0")
type AsyncCustomAuthorizerHandler =
AsyncHandler[CustomAuthorizerEvent, CustomAuthorizerResult]
type Condition = js.Dictionary[String | js.Array[String]]
Expand All @@ -39,6 +41,39 @@ package object aws_lambda {
type StatementResource = MaybeStatementPrincipal
type PrincipalValue =
js.Dictionary[String | js.Array[String]] | String | js.Array[String]
type CustomAuthorizerResult = APIGatewayAuthorizerResult
type APIGatewayTokenAuthorizerHandler =
Handler[APIGatewayTokenAuthorizerEvent, APIGatewayAuthorizerResult]
type AsyncAPIGatewayTokenAuthorizerHandler =
AsyncHandler[APIGatewayTokenAuthorizerEvent, APIGatewayAuthorizerResult]
type APIGatewayTokenAuthorizerWithContextHandler[
TAuthorizerContext <: APIGatewayAuthorizerResultContext
] = Handler[
APIGatewayTokenAuthorizerEvent,
APIGatewayAuthorizerWithContextResult[TAuthorizerContext]
]
type AsyncAPIGatewayTokenAuthorizerWithContextHandler[
TAuthorizerContext <: APIGatewayAuthorizerResultContext
] = AsyncHandler[
APIGatewayTokenAuthorizerEvent,
APIGatewayAuthorizerWithContextResult[TAuthorizerContext]
]
type APIGatewayRequestAuthorizerHandler =
Handler[APIGatewayRequestAuthorizerEvent, APIGatewayAuthorizerResult]
type AsyncAPIGatewayRequestAuthorizerHandler =
AsyncHandler[APIGatewayRequestAuthorizerEvent, APIGatewayAuthorizerResult]
type APIGatewayRequestAuthorizerWithContextHandler[
TAuthorizerContext <: APIGatewayAuthorizerResultContext
] = Handler[
APIGatewayRequestAuthorizerEvent,
APIGatewayAuthorizerWithContextResult[TAuthorizerContext]
]
type AsyncAPIGatewayRequestAuthorizerWithContextHandler[
TAuthorizerContext <: APIGatewayAuthorizerResultContext
] = AsyncHandler[
APIGatewayRequestAuthorizerEvent,
APIGatewayAuthorizerWithContextResult[TAuthorizerContext]
]

// authorizer-proxy
@deprecated("Old name. Use APIGatewayProxyHandler", "0.5.0")
Expand Down