Chilkat Online Tools

CreateGraphqlApi PureBasic Example

AWS AppSync

IncludeFile "CkJsonObject.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkAuthAws.pb"

Procedure ChilkatExample()

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success.i

    authAws.i = CkAuthAws::ckCreate()
    If authAws.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY")
    CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY")

    ; Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
    CkAuthAws::setCkRegion(authAws, "us-west-2")
    CkAuthAws::setCkServiceName(authAws, "appsync")
    ; SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
    CkRest::ckSetAuthAws(rest,authAws)

    ; URL: https://appsync.us-west-2.amazonaws.com/
    ; Use the same region as specified above.
    success = CkRest::ckConnect(rest,"appsync.us-west-2.amazonaws.com",443,1,1)
    If success <> 1
        Debug "ConnectFailReason: " + Str(CkRest::ckConnectFailReason(rest))
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkAuthAws::ckDispose(authAws)
        ProcedureReturn
    EndIf

    ; The following code creates the JSON request body.
    ; The JSON created by this code is shown below.

    ; Use this online tool to generate code from sample JSON:
    ; Generate Code to Create JSON

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].authenticationType","string")
    CkJsonObject::ckUpdateInt(json,"additionalAuthenticationProviders[0].lambdaAuthorizerConfig.authorizerResultTtlInSeconds",123)
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].lambdaAuthorizerConfig.authorizerUri","string")
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].lambdaAuthorizerConfig.identityValidationExpression","string")
    CkJsonObject::ckUpdateInt(json,"additionalAuthenticationProviders[0].openIDConnectConfig.authTTL",123)
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].openIDConnectConfig.clientId","string")
    CkJsonObject::ckUpdateInt(json,"additionalAuthenticationProviders[0].openIDConnectConfig.iatTTL",123)
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].openIDConnectConfig.issuer","string")
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].userPoolConfig.appIdClientRegex","string")
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].userPoolConfig.awsRegion","string")
    CkJsonObject::ckUpdateString(json,"additionalAuthenticationProviders[0].userPoolConfig.userPoolId","string")
    CkJsonObject::ckUpdateString(json,"authenticationType","string")
    CkJsonObject::ckUpdateInt(json,"lambdaAuthorizerConfig.authorizerResultTtlInSeconds",123)
    CkJsonObject::ckUpdateString(json,"lambdaAuthorizerConfig.authorizerUri","string")
    CkJsonObject::ckUpdateString(json,"lambdaAuthorizerConfig.identityValidationExpression","string")
    CkJsonObject::ckUpdateString(json,"logConfig.cloudWatchLogsRoleArn","string")
    CkJsonObject::ckUpdateInt(json,"logConfig.excludeVerboseContent",123)
    CkJsonObject::ckUpdateString(json,"logConfig.fieldLogLevel","string")
    CkJsonObject::ckUpdateString(json,"name","string")
    CkJsonObject::ckUpdateInt(json,"openIDConnectConfig.authTTL",123)
    CkJsonObject::ckUpdateString(json,"openIDConnectConfig.clientId","string")
    CkJsonObject::ckUpdateInt(json,"openIDConnectConfig.iatTTL",123)
    CkJsonObject::ckUpdateString(json,"openIDConnectConfig.issuer","string")
    CkJsonObject::ckUpdateString(json,"tags.string","string")
    CkJsonObject::ckUpdateString(json,"userPoolConfig.appIdClientRegex","string")
    CkJsonObject::ckUpdateString(json,"userPoolConfig.awsRegion","string")
    CkJsonObject::ckUpdateString(json,"userPoolConfig.defaultAction","string")
    CkJsonObject::ckUpdateString(json,"userPoolConfig.userPoolId","string")
    CkJsonObject::ckUpdateInt(json,"xrayEnabled",123)

    ; The JSON request body created by the above code:

    ; {
    ;   "additionalAuthenticationProviders": [
    ;     {
    ;       "authenticationType": "string",
    ;       "lambdaAuthorizerConfig": {
    ;         "authorizerResultTtlInSeconds": number,
    ;         "authorizerUri": "string",
    ;         "identityValidationExpression": "string"
    ;       },
    ;       "openIDConnectConfig": {
    ;         "authTTL": number,
    ;         "clientId": "string",
    ;         "iatTTL": number,
    ;         "issuer": "string"
    ;       },
    ;       "userPoolConfig": {
    ;         "appIdClientRegex": "string",
    ;         "awsRegion": "string",
    ;         "userPoolId": "string"
    ;       }
    ;     }
    ;   ],
    ;   "authenticationType": "string",
    ;   "lambdaAuthorizerConfig": {
    ;     "authorizerResultTtlInSeconds": number,
    ;     "authorizerUri": "string",
    ;     "identityValidationExpression": "string"
    ;   },
    ;   "logConfig": {
    ;     "cloudWatchLogsRoleArn": "string",
    ;     "excludeVerboseContent": boolean,
    ;     "fieldLogLevel": "string"
    ;   },
    ;   "name": "string",
    ;   "openIDConnectConfig": {
    ;     "authTTL": number,
    ;     "clientId": "string",
    ;     "iatTTL": number,
    ;     "issuer": "string"
    ;   },
    ;   "tags": {
    ;     "string": "string"
    ;   },
    ;   "userPoolConfig": {
    ;     "appIdClientRegex": "string",
    ;     "awsRegion": "string",
    ;     "defaultAction": "string",
    ;     "userPoolId": "string"
    ;   },
    ;   "xrayEnabled": boolean
    ; }

    CkRest::ckAddHeader(rest,"Content-Type","application/x-amz-json-1.1")
    CkRest::ckAddHeader(rest,"X-Amz-Target","CreateGraphqlApi")

    sbRequestBody.i = CkStringBuilder::ckCreate()
    If sbRequestBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckEmitSb(json,sbRequestBody)
    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkRest::ckFullRequestSb(rest,"POST","/v1/apis",sbRequestBody,sbResponseBody)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkAuthAws::ckDispose(authAws)
        CkJsonObject::ckDispose(json)
        CkStringBuilder::ckDispose(sbRequestBody)
        CkStringBuilder::ckDispose(sbResponseBody)
        ProcedureReturn
    EndIf

    respStatusCode.i = CkRest::ckResponseStatusCode(rest)
    Debug "response status code = " + Str(respStatusCode)
    If respStatusCode <> 200
        Debug "Response Header:"
        Debug CkRest::ckResponseHeader(rest)
        Debug "Response Body:"
        Debug CkStringBuilder::ckGetAsString(sbResponseBody)
        CkRest::ckDispose(rest)
        CkAuthAws::ckDispose(authAws)
        CkJsonObject::ckDispose(json)
        CkStringBuilder::ckDispose(sbRequestBody)
        CkStringBuilder::ckDispose(sbResponseBody)
        ProcedureReturn
    EndIf

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)

    ; The following code parses the JSON response.
    ; A sample JSON response is shown below the sample code.

    ; Use this online tool to generate parsing code from sample JSON:
    ; Generate Parsing Code from JSON

    authenticationType.s
    lambdaAuthorizerConfigAuthorizerResultTtlInSeconds.i
    lambdaAuthorizerConfigAuthorizerUri.s
    lambdaAuthorizerConfigIdentityValidationExpression.s
    openIDConnectConfigAuthTTL.i
    openIDConnectConfigClientId.s
    openIDConnectConfigIatTTL.i
    openIDConnectConfigIssuer.s
    userPoolConfigAppIdClientRegex.s
    userPoolConfigAwsRegion.s
    userPoolConfigUserPoolId.s

    ApiId.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.apiId")
    Arn.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.arn")
    AuthenticationType.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.authenticationType")
    AuthorizerResultTtlInSeconds.i = CkJsonObject::ckIntOf(jResp,"graphqlApi.lambdaAuthorizerConfig.authorizerResultTtlInSeconds")
    AuthorizerUri.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.lambdaAuthorizerConfig.authorizerUri")
    IdentityValidationExpression.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.lambdaAuthorizerConfig.identityValidationExpression")
    CloudWatchLogsRoleArn.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.logConfig.cloudWatchLogsRoleArn")
    ExcludeVerboseContent.i = CkJsonObject::ckIntOf(jResp,"graphqlApi.logConfig.excludeVerboseContent")
    FieldLogLevel.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.logConfig.fieldLogLevel")
    Name.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.name")
    AuthTTL.i = CkJsonObject::ckIntOf(jResp,"graphqlApi.openIDConnectConfig.authTTL")
    ClientId.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.openIDConnectConfig.clientId")
    IatTTL.i = CkJsonObject::ckIntOf(jResp,"graphqlApi.openIDConnectConfig.iatTTL")
    Issuer.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.openIDConnectConfig.issuer")
    v_String.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.tags.string")
    UrisString.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.uris.string")
    AppIdClientRegex.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.userPoolConfig.appIdClientRegex")
    AwsRegion.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.userPoolConfig.awsRegion")
    DefaultAction.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.userPoolConfig.defaultAction")
    UserPoolId.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.userPoolConfig.userPoolId")
    WafWebAclArn.s = CkJsonObject::ckStringOf(jResp,"graphqlApi.wafWebAclArn")
    XrayEnabled.i = CkJsonObject::ckIntOf(jResp,"graphqlApi.xrayEnabled")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"graphqlApi.additionalAuthenticationProviders")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        authenticationType = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].authenticationType")
        lambdaAuthorizerConfigAuthorizerResultTtlInSeconds = CkJsonObject::ckIntOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].lambdaAuthorizerConfig.authorizerResultTtlInSeconds")
        lambdaAuthorizerConfigAuthorizerUri = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].lambdaAuthorizerConfig.authorizerUri")
        lambdaAuthorizerConfigIdentityValidationExpression = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].lambdaAuthorizerConfig.identityValidationExpression")
        openIDConnectConfigAuthTTL = CkJsonObject::ckIntOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].openIDConnectConfig.authTTL")
        openIDConnectConfigClientId = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].openIDConnectConfig.clientId")
        openIDConnectConfigIatTTL = CkJsonObject::ckIntOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].openIDConnectConfig.iatTTL")
        openIDConnectConfigIssuer = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].openIDConnectConfig.issuer")
        userPoolConfigAppIdClientRegex = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].userPoolConfig.appIdClientRegex")
        userPoolConfigAwsRegion = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].userPoolConfig.awsRegion")
        userPoolConfigUserPoolId = CkJsonObject::ckStringOf(jResp,"graphqlApi.additionalAuthenticationProviders[i].userPoolConfig.userPoolId")
        i = i + 1
    Wend

    ; A sample JSON response body parsed by the above code:

    ; {
    ;   "graphqlApi": {
    ;     "additionalAuthenticationProviders": [
    ;       {
    ;         "authenticationType": "string",
    ;         "lambdaAuthorizerConfig": {
    ;           "authorizerResultTtlInSeconds": number,
    ;           "authorizerUri": "string",
    ;           "identityValidationExpression": "string"
    ;         },
    ;         "openIDConnectConfig": {
    ;           "authTTL": number,
    ;           "clientId": "string",
    ;           "iatTTL": number,
    ;           "issuer": "string"
    ;         },
    ;         "userPoolConfig": {
    ;           "appIdClientRegex": "string",
    ;           "awsRegion": "string",
    ;           "userPoolId": "string"
    ;         }
    ;       }
    ;     ],
    ;     "apiId": "string",
    ;     "arn": "string",
    ;     "authenticationType": "string",
    ;     "lambdaAuthorizerConfig": {
    ;       "authorizerResultTtlInSeconds": number,
    ;       "authorizerUri": "string",
    ;       "identityValidationExpression": "string"
    ;     },
    ;     "logConfig": {
    ;       "cloudWatchLogsRoleArn": "string",
    ;       "excludeVerboseContent": boolean,
    ;       "fieldLogLevel": "string"
    ;     },
    ;     "name": "string",
    ;     "openIDConnectConfig": {
    ;       "authTTL": number,
    ;       "clientId": "string",
    ;       "iatTTL": number,
    ;       "issuer": "string"
    ;     },
    ;     "tags": {
    ;       "string": "string"
    ;     },
    ;     "uris": {
    ;       "string": "string"
    ;     },
    ;     "userPoolConfig": {
    ;       "appIdClientRegex": "string",
    ;       "awsRegion": "string",
    ;       "defaultAction": "string",
    ;       "userPoolId": "string"
    ;     },
    ;     "wafWebAclArn": "string",
    ;     "xrayEnabled": boolean
    ;   }
    ; }


    CkRest::ckDispose(rest)
    CkAuthAws::ckDispose(authAws)
    CkJsonObject::ckDispose(json)
    CkStringBuilder::ckDispose(sbRequestBody)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure