3 O4\l5@sddlmZddlmZmZddlmZddlmZm Z m Z ddl m Z m Z ddlmZddlmZGdd d eZGd d d eZGd d d eZGdddeZGdddeZGdddeZdS))match) PropertyTypeResource)InvalidResourceException)is_typeone_ofis_str)reffnSub)logical_id_generator) ArnGeneratorc @seZdZdZedeeedeeedeedeedeeedeedeeedeeedee edee d Z dddiZ dS)ApiGatewayRestApizAWS::ApiGateway::RestApiF) ZBodyZBodyS3LocationZ CloneFrom DescriptionZFailOnWarningsNameZ ParametersZEndpointConfigurationZBinaryMediaTypesZMinimumCompressionSizeZ rest_api_idcCs t|jS)N)r logical_id)selfr/Users/sshvans/Documents/Work/Quickstart/python-virtual-environments/env/lib/python3.6/site-packages/samtranslator/model/apigateway.pyszApiGatewayRestApi.N) __name__ __module__ __qualname__ resource_typerrdictrboollistintproperty_types runtime_attrsrrrrr s         r c@seZdZdZedeeedeeedeedeeedeedeedeedeede eeeedeeedeeedee d Z dddiZ dd Z d S) ApiGatewayStagezAWS::ApiGateway::StageFT) ZAccessLogSettingZCacheClusterEnabledZCacheClusterSizeZ CanarySettingZClientCertificateId DeploymentIdr RestApiId StageNameZTracingEnabled VariablesZMethodSettingsZ stage_namecCs t|jS)N)r r)rrrrr1szApiGatewayStage.cCst||_dS)N)r r )rZdeployment_logical_idrrrupdate_deployment_ref4sz%ApiGatewayStage.update_deployment_refN)rrrrrrrrrrrrrr$rrrrrs           rc@s*eZdZdZdedeeeeiZ dS)ApiGatewayAccountzAWS::ApiGateway::AccountZCloudWatchRoleArnFN) rrrrrrrrrrrrrrr%8sr%c@sVeZdZdZedeedeedeeededZdddiZ d d d Z dS) ApiGatewayDeploymentzAWS::ApiGateway::DeploymentFT)rr!ZStageDescriptionr"Z deployment_idcCs t|jS)N)r r)rrrrrIszApiGatewayDeployment.NcCsL|sdStj|jt|}|j|_|jdd}dj||_|j|jdS)z Sets up the resource such that it will triggers a re-deployment when Swagger changes :param swagger: Dictionary containing the Swagger definition of the API N()lengthzRestApi deployment id: {}) r ZLogicalIdGeneratorrstrgenZget_hashformatrr$)rZstageswagger generatorhashrrrmake_auto_deployableLs   z)ApiGatewayDeployment.make_auto_deployable)N) rrrrrrrrrrr/rrrrr&?s    r&c@s8eZdZdddgZd ddZddZd d Zd d ZdS)ApiGatewayResponseHeadersPaths QueryStringsNcCsx|r0x*|jD]}|tjkrt|dj|qW|j|}|rTtd| rTt|d||_|p`i|_|pji|_ ||_ dS)Nz'Invalid gateway response parameter '{}'z ^[0-9]{1,3}$z%Property 'StatusCode' must be numeric) keysr0ResponseParameterPropertiesrr+_status_code_stringrapi_logical_idresponse_parametersresponse_templates status_code)rr7r8r9r:Zresponse_parameter_keyZstatus_code_strrrr__init__es     zApiGatewayResponse.__init__cCs(|j|j|jd}|jr$|j|d<|S)N)ZresponseParametersZresponseTemplatesZ statusCode) _add_prefixesr8r9r:)rr,rrrgenerate_swaggerws    z#ApiGatewayResponse.generate_swaggercCsd}i}x,|jdijD]\}}|||d|<qWx,|jdijD]\}}|||d|<qHWx,|jdijD]\}}|||d|<qvW|S)Nzgatewayresponse.r1zheader.r2zpath.r3z querystring.)getitems)rr8ZGATEWAY_RESPONSE_PREFIXZprefixed_parameterskeyvaluerrrr<sz ApiGatewayResponse._add_prefixescCs|dkr dSt|S)N)r))rr:rrrr6sz&ApiGatewayResponse._status_code_string)NNNN)rrrr5r;r=r<r6rrrrr0bs     r0c@seZdZdddgZd!ddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd ZdS)"ApiGatewayAuthorizerNTOKENREQUESTFc Csp|tjkrt||d||dkr<|j|r)rrJheadersZ query_stringsZstage_variablescontextrrrrFs    z0ApiGatewayAuthorizer._is_missing_identity_sourcec Cs |j}d}d|jd|jd}|dkrB|j|jd||<n|dkrd|ji||<tj}d }ttj|d |d d d |j i}|||d<|j }|j }|dk r|||d<|r|||d<|j dkr|j ||d<|dko|j dk} |dkp| r|j} | r| ||d<|S)Nzx-amazon-apigateway-authorizerZapiKeyheader)typerGinzx-amazon-apigateway-authtypeCOGNITO_USER_POOLS)rSZ providerARNsLAMBDArSz?lambda:path/2015-03-31/functions/${__FunctionArn__}/invocationsZ apigatewayF) partitionZserviceresourceZinclude_account_idZ__FunctionArn__Z authorizerUriZauthorizerResultTtlInSecondsZauthorizerCredentialsrDZidentitySourcerCZidentityValidationExpression) _get_type_get_swagger_header_name_get_swagger_authtype_get_swagger_authorizer_type_get_user_pool_arn_arrayr Zget_partition_namer Z generate_arnrI_get_reauthorize_every_get_function_invoke_role_get_function_payload_type_get_identity_source#_get_identity_validation_expression) rauthorizer_typeZAPIGATEWAY_AUTHORIZER_KEYr,rWrXZauthorizer_uriZreauthorize_everyrLZis_lambda_token_authorizerZidentity_validation_expressionrrrr=s>        z%ApiGatewayAuthorizer.generate_swaggercCs|jo|jjdS)NZValidationExpression)rJr>)rrrrrbsz8ApiGatewayAuthorizer._get_identity_validation_expressioncCsg}g}g}g}|jjdr6ttdd|jjd}|jjdr\ttdd|jjd}|jjdrttdd|jjd}|jjdrttd d|jjd}||||}d j|}|S) Nr1cSsd|S)Nzmethod.request.header.r)hrrrrsz;ApiGatewayAuthorizer._get_identity_source..r3cSsd|S)Nzmethod.request.querystring.r)qsrrrrsrNcSsd|S)NzstageVariables.r)svrrrrsrOcSsd|S)Nzcontext.r)crrrrsz, )rJr>rmapjoin)rZidentity_source_headersZidentity_source_query_stringsZidentity_source_stage_variablesZidentity_source_contextZidentity_source_arrayZidentity_sourcerrrras"       z)ApiGatewayAuthorizer._get_identity_sourcecCst|jtr|jS|jgS)N) isinstancerHr)rrrrr]sz-ApiGatewayAuthorizer._get_user_pool_arn_arraycCs,|j}|j}|dkr$|dkr$dS|jS)NrVrDZUnused)rYr`_get_identity_header)rrc payload_typerrrrZ s z-ApiGatewayAuthorizer._get_swagger_header_namecCs|jr dS|jrdSdS)NAWS_IAMrUrV)rMrH)rrrrrYs zApiGatewayAuthorizer._get_typecCs&|j s|jjd rdS|jjdS)NHeaderZ Authorization)rJr>)rrrrrksz)ApiGatewayAuthorizer._get_identity_headercCs|js dS|jjdS)NZReauthorizeEvery)rJr>)rrrrr^!sz+ApiGatewayAuthorizer._get_reauthorize_everycCs|j s|jdkrdS|jS)NNONE)rL)rrrrr_'sz.ApiGatewayAuthorizer._get_function_invoke_rolecCs$|j}|dkrdS|dkr dSdS)NrmZawsSigv4rUcognito_user_poolsZcustom)rY)rrcrrrr[-s z*ApiGatewayAuthorizer._get_swagger_authtypecCs|js dS|jS)NrC)rK)rrrrr`7sz/ApiGatewayAuthorizer._get_function_payload_typecCs8|j}|dkrdS|j}|dkr(dS|dkr4dSdS)NrUrprDrequestrCtoken)rYr`)rrcrlrrrr\:sz1ApiGatewayAuthorizer._get_swagger_authorizer_type)NNNNNNNF)rrrrEr;rFr=rbrar]rZrYrkr^r_r[r`r\rrrrrBs   2   rBN)rerZsamtranslator.modelrrZsamtranslator.model.exceptionsrZsamtranslator.model.typesrrrZsamtranslator.model.intrinsicsr r Zsamtranslator.translatorr Z&samtranslator.translator.arn_generatorr r rr%r&objectr0rBrrrrs    #1