Skip to content

Commit

Permalink
Merge pull request #102 from exoego/apigw
Browse files Browse the repository at this point in the history
New API Gateway Authorizer types, deprecating old ones
  • Loading branch information
exoego committed Mar 3, 2020
2 parents 8a8ec36 + 54fd001 commit 6a7bae0
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 56 deletions.
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

0 comments on commit 6a7bae0

Please sign in to comment.