Chilkat Online Tools

GetDistributionConfiguration PureBasic Example

EC2 Image Builder

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

    ; URL: https://imagebuilder.us-west-2.amazonaws.com/
    ; Use the same region as specified above.
    success = CkRest::ckConnect(rest,"imagebuilder.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

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

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

    success = CkRest::ckFullRequestNoBodySb(rest,"GET","/GetDistributionConfiguration",sbResponseBody)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkAuthAws::ckDispose(authAws)
        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)
        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

    AmiTagsString.s
    amiDistributionConfigurationDescription.s
    KmsKeyId.s
    amiDistributionConfigurationName.s
    containerDistributionConfigurationDescription.s
    RepositoryName.s
    Service.s
    region.s
    DiskImageFormat.s
    RoleName.s
    S3Bucket.s
    S3Prefix.s
    j.i
    count_j.i
    strVal.s
    accountId.s
    enabled.i
    LaunchTemplateId.s
    LaunchTemplateName.s
    LaunchTemplateVersion.s
    maxParallelLaunches.i
    TargetResourceCount.i
    launchTemplateId.s
    setDefaultVersion.i

    Arn.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.arn")
    DateCreated.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.dateCreated")
    DateUpdated.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.dateUpdated")
    Description.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.description")
    Name.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.name")
    v_String.s = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.tags.string")
    TimeoutMinutes.i = CkJsonObject::ckIntOf(jResp,"distributionConfiguration.timeoutMinutes")
    requestId.s = CkJsonObject::ckStringOf(jResp,"requestId")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        AmiTagsString = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.amiTags.string")
        amiDistributionConfigurationDescription = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.description")
        KmsKeyId = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.kmsKeyId")
        amiDistributionConfigurationName = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.name")
        containerDistributionConfigurationDescription = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].containerDistributionConfiguration.description")
        RepositoryName = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].containerDistributionConfiguration.targetRepository.repositoryName")
        Service = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].containerDistributionConfiguration.targetRepository.service")
        region = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].region")
        DiskImageFormat = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].s3ExportConfiguration.diskImageFormat")
        RoleName = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].s3ExportConfiguration.roleName")
        S3Bucket = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].s3ExportConfiguration.s3Bucket")
        S3Prefix = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].s3ExportConfiguration.s3Prefix")
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.organizationalUnitArns")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.organizationalUnitArns[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.organizationArns")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.organizationArns[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.userGroups")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.userGroups[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.userIds")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.launchPermission.userIds[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.targetAccountIds")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].amiDistributionConfiguration.targetAccountIds[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].containerDistributionConfiguration.containerTags")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].containerDistributionConfiguration.containerTags[j]")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            accountId = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].accountId")
            enabled = CkJsonObject::ckIntOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].enabled")
            LaunchTemplateId = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].launchTemplate.launchTemplateId")
            LaunchTemplateName = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].launchTemplate.launchTemplateName")
            LaunchTemplateVersion = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].launchTemplate.launchTemplateVersion")
            maxParallelLaunches = CkJsonObject::ckIntOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].maxParallelLaunches")
            TargetResourceCount = CkJsonObject::ckIntOf(jResp,"distributionConfiguration.distributions[i].fastLaunchConfigurations[j].snapshotConfiguration.targetResourceCount")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].launchTemplateConfigurations")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            accountId = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].launchTemplateConfigurations[j].accountId")
            launchTemplateId = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].launchTemplateConfigurations[j].launchTemplateId")
            setDefaultVersion = CkJsonObject::ckIntOf(jResp,"distributionConfiguration.distributions[i].launchTemplateConfigurations[j].setDefaultVersion")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"distributionConfiguration.distributions[i].licenseConfigurationArns")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            strVal = CkJsonObject::ckStringOf(jResp,"distributionConfiguration.distributions[i].licenseConfigurationArns[j]")
            j = j + 1
        Wend
        i = i + 1
    Wend

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

    ; {
    ;   "distributionConfiguration": {
    ;     "arn": "string",
    ;     "dateCreated": "string",
    ;     "dateUpdated": "string",
    ;     "description": "string",
    ;     "distributions": [
    ;       {
    ;         "amiDistributionConfiguration": {
    ;           "amiTags": {
    ;             "string": "string"
    ;           },
    ;           "description": "string",
    ;           "kmsKeyId": "string",
    ;           "launchPermission": {
    ;             "organizationalUnitArns": [
    ;               "string"
    ;             ],
    ;             "organizationArns": [
    ;               "string"
    ;             ],
    ;             "userGroups": [
    ;               "string"
    ;             ],
    ;             "userIds": [
    ;               "string"
    ;             ]
    ;           },
    ;           "name": "string",
    ;           "targetAccountIds": [
    ;             "string"
    ;           ]
    ;         },
    ;         "containerDistributionConfiguration": {
    ;           "containerTags": [
    ;             "string"
    ;           ],
    ;           "description": "string",
    ;           "targetRepository": {
    ;             "repositoryName": "string",
    ;             "service": "string"
    ;           }
    ;         },
    ;         "fastLaunchConfigurations": [
    ;           {
    ;             "accountId": "string",
    ;             "enabled": boolean,
    ;             "launchTemplate": {
    ;               "launchTemplateId": "string",
    ;               "launchTemplateName": "string",
    ;               "launchTemplateVersion": "string"
    ;             },
    ;             "maxParallelLaunches": number,
    ;             "snapshotConfiguration": {
    ;               "targetResourceCount": number
    ;             }
    ;           }
    ;         ],
    ;         "launchTemplateConfigurations": [
    ;           {
    ;             "accountId": "string",
    ;             "launchTemplateId": "string",
    ;             "setDefaultVersion": boolean
    ;           }
    ;         ],
    ;         "licenseConfigurationArns": [
    ;           "string"
    ;         ],
    ;         "region": "string",
    ;         "s3ExportConfiguration": {
    ;           "diskImageFormat": "string",
    ;           "roleName": "string",
    ;           "s3Bucket": "string",
    ;           "s3Prefix": "string"
    ;         }
    ;       }
    ;     ],
    ;     "name": "string",
    ;     "tags": {
    ;       "string": "string"
    ;     },
    ;     "timeoutMinutes": number
    ;   },
    ;   "requestId": "string"
    ; }


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


    ProcedureReturn
EndProcedure