Chilkat Online Tools

DescribePullRequestEvents PureBasic Example

AWS CodeCommit

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

    ; URL: https://codecommit.us-west-2.amazonaws.com/
    ; Use the same region as specified above.
    success = CkRest::ckConnect(rest,"codecommit.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,"actorArn","string")
    CkJsonObject::ckUpdateInt(json,"maxResults",123)
    CkJsonObject::ckUpdateString(json,"nextToken","string")
    CkJsonObject::ckUpdateString(json,"pullRequestEventType","string")
    CkJsonObject::ckUpdateString(json,"pullRequestId","string")

    ; The JSON request body created by the above code:

    ; {
    ;   "actorArn": "string",
    ;   "maxResults": number,
    ;   "nextToken": "string",
    ;   "pullRequestEventType": "string",
    ;   "pullRequestId": "string"
    ; }

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

    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","/",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

    actorArn.s
    ApprovalRuleContent.s
    ApprovalRuleId.s
    ApprovalRuleName.s
    OverrideStatus.s
    RevisionId.s
    ApprovalStatus.s
    approvalStateChangedEventMetadataRevisionId.s
    eventDate.i
    DestinationCommitId.s
    MergeBase.s
    RepositoryName.s
    SourceCommitId.s
    pullRequestEventType.s
    pullRequestId.s
    DestinationReference.s
    IsMerged.i
    MergeCommitId.s
    MergedBy.s
    MergeOption.s
    pullRequestMergedStateChangedEventMetadataRepositoryName.s
    AfterCommitId.s
    BeforeCommitId.s
    pullRequestSourceReferenceUpdatedEventMetadataMergeBase.s
    pullRequestSourceReferenceUpdatedEventMetadataRepositoryName.s
    PullRequestStatus.s

    nextToken.s = CkJsonObject::ckStringOf(jResp,"nextToken")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"pullRequestEvents")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        actorArn = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].actorArn")
        ApprovalRuleContent = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalRuleEventMetadata.approvalRuleContent")
        ApprovalRuleId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalRuleEventMetadata.approvalRuleId")
        ApprovalRuleName = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalRuleEventMetadata.approvalRuleName")
        OverrideStatus = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalRuleOverriddenEventMetadata.overrideStatus")
        RevisionId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalRuleOverriddenEventMetadata.revisionId")
        ApprovalStatus = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalStateChangedEventMetadata.approvalStatus")
        approvalStateChangedEventMetadataRevisionId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].approvalStateChangedEventMetadata.revisionId")
        eventDate = CkJsonObject::ckIntOf(jResp,"pullRequestEvents[i].eventDate")
        DestinationCommitId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestCreatedEventMetadata.destinationCommitId")
        MergeBase = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestCreatedEventMetadata.mergeBase")
        RepositoryName = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestCreatedEventMetadata.repositoryName")
        SourceCommitId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestCreatedEventMetadata.sourceCommitId")
        pullRequestEventType = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestEventType")
        pullRequestId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestId")
        DestinationReference = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.destinationReference")
        IsMerged = CkJsonObject::ckIntOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.mergeMetadata.isMerged")
        MergeCommitId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.mergeMetadata.mergeCommitId")
        MergedBy = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.mergeMetadata.mergedBy")
        MergeOption = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.mergeMetadata.mergeOption")
        pullRequestMergedStateChangedEventMetadataRepositoryName = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestMergedStateChangedEventMetadata.repositoryName")
        AfterCommitId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestSourceReferenceUpdatedEventMetadata.afterCommitId")
        BeforeCommitId = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestSourceReferenceUpdatedEventMetadata.beforeCommitId")
        pullRequestSourceReferenceUpdatedEventMetadataMergeBase = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestSourceReferenceUpdatedEventMetadata.mergeBase")
        pullRequestSourceReferenceUpdatedEventMetadataRepositoryName = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestSourceReferenceUpdatedEventMetadata.repositoryName")
        PullRequestStatus = CkJsonObject::ckStringOf(jResp,"pullRequestEvents[i].pullRequestStatusChangedEventMetadata.pullRequestStatus")
        i = i + 1
    Wend

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

    ; {
    ;   "nextToken": "string",
    ;   "pullRequestEvents": [
    ;     {
    ;       "actorArn": "string",
    ;       "approvalRuleEventMetadata": {
    ;         "approvalRuleContent": "string",
    ;         "approvalRuleId": "string",
    ;         "approvalRuleName": "string"
    ;       },
    ;       "approvalRuleOverriddenEventMetadata": {
    ;         "overrideStatus": "string",
    ;         "revisionId": "string"
    ;       },
    ;       "approvalStateChangedEventMetadata": {
    ;         "approvalStatus": "string",
    ;         "revisionId": "string"
    ;       },
    ;       "eventDate": number,
    ;       "pullRequestCreatedEventMetadata": {
    ;         "destinationCommitId": "string",
    ;         "mergeBase": "string",
    ;         "repositoryName": "string",
    ;         "sourceCommitId": "string"
    ;       },
    ;       "pullRequestEventType": "string",
    ;       "pullRequestId": "string",
    ;       "pullRequestMergedStateChangedEventMetadata": {
    ;         "destinationReference": "string",
    ;         "mergeMetadata": {
    ;           "isMerged": boolean,
    ;           "mergeCommitId": "string",
    ;           "mergedBy": "string",
    ;           "mergeOption": "string"
    ;         },
    ;         "repositoryName": "string"
    ;       },
    ;       "pullRequestSourceReferenceUpdatedEventMetadata": {
    ;         "afterCommitId": "string",
    ;         "beforeCommitId": "string",
    ;         "mergeBase": "string",
    ;         "repositoryName": "string"
    ;       },
    ;       "pullRequestStatusChangedEventMetadata": {
    ;         "pullRequestStatus": "string"
    ;       }
    ;     }
    ;   ]
    ; }


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


    ProcedureReturn
EndProcedure