Chilkat Online Tools

UpdateApp PureBasic Example

Amplify

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, "amplify")
    ; SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
    CkRest::ckSetAuthAws(rest,authAws)

    ; URL: https://amplify.us-west-2.amazonaws.com/
    ; Use the same region as specified above.
    success = CkRest::ckConnect(rest,"amplify.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,"accessToken","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.basicAuthCredentials","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.buildSpec","string")
    CkJsonObject::ckUpdateInt(json,"autoBranchCreationConfig.enableAutoBuild",123)
    CkJsonObject::ckUpdateInt(json,"autoBranchCreationConfig.enableBasicAuth",123)
    CkJsonObject::ckUpdateInt(json,"autoBranchCreationConfig.enablePerformanceMode",123)
    CkJsonObject::ckUpdateInt(json,"autoBranchCreationConfig.enablePullRequestPreview",123)
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.environmentVariables.string","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.framework","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.pullRequestEnvironmentName","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationConfig.stage","string")
    CkJsonObject::ckUpdateString(json,"autoBranchCreationPatterns[0]","string")
    CkJsonObject::ckUpdateString(json,"basicAuthCredentials","string")
    CkJsonObject::ckUpdateString(json,"buildSpec","string")
    CkJsonObject::ckUpdateString(json,"customHeaders","string")
    CkJsonObject::ckUpdateString(json,"customRules[0].condition","string")
    CkJsonObject::ckUpdateString(json,"customRules[0].source","string")
    CkJsonObject::ckUpdateString(json,"customRules[0].status","string")
    CkJsonObject::ckUpdateString(json,"customRules[0].target","string")
    CkJsonObject::ckUpdateString(json,"description","string")
    CkJsonObject::ckUpdateInt(json,"enableAutoBranchCreation",123)
    CkJsonObject::ckUpdateInt(json,"enableBasicAuth",123)
    CkJsonObject::ckUpdateInt(json,"enableBranchAutoBuild",123)
    CkJsonObject::ckUpdateInt(json,"enableBranchAutoDeletion",123)
    CkJsonObject::ckUpdateString(json,"environmentVariables.string","string")
    CkJsonObject::ckUpdateString(json,"iamServiceRoleArn","string")
    CkJsonObject::ckUpdateString(json,"name","string")
    CkJsonObject::ckUpdateString(json,"oauthToken","string")
    CkJsonObject::ckUpdateString(json,"platform","string")
    CkJsonObject::ckUpdateString(json,"repository","string")

    ; The JSON request body created by the above code:

    ; {
    ;   "accessToken": "string",
    ;   "autoBranchCreationConfig": {
    ;     "basicAuthCredentials": "string",
    ;     "buildSpec": "string",
    ;     "enableAutoBuild": boolean,
    ;     "enableBasicAuth": boolean,
    ;     "enablePerformanceMode": boolean,
    ;     "enablePullRequestPreview": boolean,
    ;     "environmentVariables": {
    ;       "string": "string"
    ;     },
    ;     "framework": "string",
    ;     "pullRequestEnvironmentName": "string",
    ;     "stage": "string"
    ;   },
    ;   "autoBranchCreationPatterns": [
    ;     "string"
    ;   ],
    ;   "basicAuthCredentials": "string",
    ;   "buildSpec": "string",
    ;   "customHeaders": "string",
    ;   "customRules": [
    ;     {
    ;       "condition": "string",
    ;       "source": "string",
    ;       "status": "string",
    ;       "target": "string"
    ;     }
    ;   ],
    ;   "description": "string",
    ;   "enableAutoBranchCreation": boolean,
    ;   "enableBasicAuth": boolean,
    ;   "enableBranchAutoBuild": boolean,
    ;   "enableBranchAutoDeletion": boolean,
    ;   "environmentVariables": {
    ;     "string": "string"
    ;   },
    ;   "iamServiceRoleArn": "string",
    ;   "name": "string",
    ;   "oauthToken": "string",
    ;   "platform": "string",
    ;   "repository": "string"
    ; }

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

    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","/apps/{appId}",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

    strVal.s
    condition.s
    source.s
    status.s
    target.s

    AppArn.s = CkJsonObject::ckStringOf(jResp,"app.appArn")
    AppId.s = CkJsonObject::ckStringOf(jResp,"app.appId")
    BasicAuthCredentials.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.basicAuthCredentials")
    BuildSpec.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.buildSpec")
    EnableAutoBuild.i = CkJsonObject::ckIntOf(jResp,"app.autoBranchCreationConfig.enableAutoBuild")
    EnableBasicAuth.i = CkJsonObject::ckIntOf(jResp,"app.autoBranchCreationConfig.enableBasicAuth")
    EnablePerformanceMode.i = CkJsonObject::ckIntOf(jResp,"app.autoBranchCreationConfig.enablePerformanceMode")
    EnablePullRequestPreview.i = CkJsonObject::ckIntOf(jResp,"app.autoBranchCreationConfig.enablePullRequestPreview")
    v_String.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.environmentVariables.string")
    Framework.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.framework")
    PullRequestEnvironmentName.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.pullRequestEnvironmentName")
    Stage.s = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationConfig.stage")
    appBasicAuthCredentials.s = CkJsonObject::ckStringOf(jResp,"app.basicAuthCredentials")
    appBuildSpec.s = CkJsonObject::ckStringOf(jResp,"app.buildSpec")
    CreateTime.i = CkJsonObject::ckIntOf(jResp,"app.createTime")
    CustomHeaders.s = CkJsonObject::ckStringOf(jResp,"app.customHeaders")
    DefaultDomain.s = CkJsonObject::ckStringOf(jResp,"app.defaultDomain")
    Description.s = CkJsonObject::ckStringOf(jResp,"app.description")
    EnableAutoBranchCreation.i = CkJsonObject::ckIntOf(jResp,"app.enableAutoBranchCreation")
    appEnableBasicAuth.i = CkJsonObject::ckIntOf(jResp,"app.enableBasicAuth")
    EnableBranchAutoBuild.i = CkJsonObject::ckIntOf(jResp,"app.enableBranchAutoBuild")
    EnableBranchAutoDeletion.i = CkJsonObject::ckIntOf(jResp,"app.enableBranchAutoDeletion")
    EnvironmentVariablesString.s = CkJsonObject::ckStringOf(jResp,"app.environmentVariables.string")
    IamServiceRoleArn.s = CkJsonObject::ckStringOf(jResp,"app.iamServiceRoleArn")
    Name.s = CkJsonObject::ckStringOf(jResp,"app.name")
    Platform.s = CkJsonObject::ckStringOf(jResp,"app.platform")
    BranchName.s = CkJsonObject::ckStringOf(jResp,"app.productionBranch.branchName")
    LastDeployTime.i = CkJsonObject::ckIntOf(jResp,"app.productionBranch.lastDeployTime")
    Status.s = CkJsonObject::ckStringOf(jResp,"app.productionBranch.status")
    ThumbnailUrl.s = CkJsonObject::ckStringOf(jResp,"app.productionBranch.thumbnailUrl")
    Repository.s = CkJsonObject::ckStringOf(jResp,"app.repository")
    RepositoryCloneMethod.s = CkJsonObject::ckStringOf(jResp,"app.repositoryCloneMethod")
    TagsString.s = CkJsonObject::ckStringOf(jResp,"app.tags.string")
    UpdateTime.i = CkJsonObject::ckIntOf(jResp,"app.updateTime")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"app.autoBranchCreationPatterns")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        strVal = CkJsonObject::ckStringOf(jResp,"app.autoBranchCreationPatterns[i]")
        i = i + 1
    Wend
    i = 0
    count_i = CkJsonObject::ckSizeOfArray(jResp,"app.customRules")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        condition = CkJsonObject::ckStringOf(jResp,"app.customRules[i].condition")
        source = CkJsonObject::ckStringOf(jResp,"app.customRules[i].source")
        status = CkJsonObject::ckStringOf(jResp,"app.customRules[i].status")
        target = CkJsonObject::ckStringOf(jResp,"app.customRules[i].target")
        i = i + 1
    Wend

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

    ; {
    ;   "app": {
    ;     "appArn": "string",
    ;     "appId": "string",
    ;     "autoBranchCreationConfig": {
    ;       "basicAuthCredentials": "string",
    ;       "buildSpec": "string",
    ;       "enableAutoBuild": boolean,
    ;       "enableBasicAuth": boolean,
    ;       "enablePerformanceMode": boolean,
    ;       "enablePullRequestPreview": boolean,
    ;       "environmentVariables": {
    ;         "string": "string"
    ;       },
    ;       "framework": "string",
    ;       "pullRequestEnvironmentName": "string",
    ;       "stage": "string"
    ;     },
    ;     "autoBranchCreationPatterns": [
    ;       "string"
    ;     ],
    ;     "basicAuthCredentials": "string",
    ;     "buildSpec": "string",
    ;     "createTime": number,
    ;     "customHeaders": "string",
    ;     "customRules": [
    ;       {
    ;         "condition": "string",
    ;         "source": "string",
    ;         "status": "string",
    ;         "target": "string"
    ;       }
    ;     ],
    ;     "defaultDomain": "string",
    ;     "description": "string",
    ;     "enableAutoBranchCreation": boolean,
    ;     "enableBasicAuth": boolean,
    ;     "enableBranchAutoBuild": boolean,
    ;     "enableBranchAutoDeletion": boolean,
    ;     "environmentVariables": {
    ;       "string": "string"
    ;     },
    ;     "iamServiceRoleArn": "string",
    ;     "name": "string",
    ;     "platform": "string",
    ;     "productionBranch": {
    ;       "branchName": "string",
    ;       "lastDeployTime": number,
    ;       "status": "string",
    ;       "thumbnailUrl": "string"
    ;     },
    ;     "repository": "string",
    ;     "repositoryCloneMethod": "string",
    ;     "tags": {
    ;       "string": "string"
    ;     },
    ;     "updateTime": number
    ;   }
    ; }


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


    ProcedureReturn
EndProcedure