Sample code for 30+ languages & platforms
PureBasic

Outlook Calendar List Events

See more Outlook Calendar Examples

Retrieve a list of events in a calendar.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Use your previously obtained access token here: Get Outlook Calendar OAuth2 Access Token (Azure AD v2.0 Endpoint).

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

    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/outlookCalendar.json")
    If success = 0
        Debug CkJsonObject::ckLastErrorText(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

    CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))

    ; Specify the ID of the calendar to list.
    calendarId.s = "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEGAAAA5_vF7TKKdE6bGCRqXyl2PQAAAiCsAAAA"

    CkHttp::ckSetUrlVar(http,"id",calendarId)

    ; To list the events in the default calendar, use the following URL: https://graph.microsoft.com/v1.0/me/calendars/events

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

    success = CkHttp::ckHttpNoBody(http,"GET","https://graph.microsoft.com/v1.0/me/calendars/{$id}/events",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    ; The HTTP request succeeded if the response status code = 200.
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug CkHttpResponse::ckBodyStr(resp)
        Debug "Failed"
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

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

    CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp))
    CkJsonObject::setCkEmitCompact(json, 0)
    Debug CkJsonObject::ckEmit(json)

    ; Here is a sample response:

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

    ; {
    ;   "value": [
    ;     {
    ;       "originalStartTimeZone": "originalStartTimeZone-value",
    ;       "originalEndTimeZone": "originalEndTimeZone-value",
    ;       "responseStatus": {
    ;         "response": "",
    ;         "time": "datetime-value"
    ;       },
    ;       "iCalUId": "iCalUId-value",
    ;       "reminderMinutesBeforeStart": 99,
    ;       "isReminderOn": true
    ;     }
    ;   ]
    ; }

    originalStartTimeZone.s
    originalEndTimeZone.s
    responseStatusResponse.s
    responseStatusTime.s
    iCalUId.s
    reminderMinutesBeforeStart.i
    isReminderOn.i

    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(json,"value")
    While i < count_i
        CkJsonObject::setCkI(json, i)
        originalStartTimeZone = CkJsonObject::ckStringOf(json,"value[i].originalStartTimeZone")
        originalEndTimeZone = CkJsonObject::ckStringOf(json,"value[i].originalEndTimeZone")
        responseStatusResponse = CkJsonObject::ckStringOf(json,"value[i].responseStatus.response")
        responseStatusTime = CkJsonObject::ckStringOf(json,"value[i].responseStatus.time")
        iCalUId = CkJsonObject::ckStringOf(json,"value[i].iCalUId")
        reminderMinutesBeforeStart = CkJsonObject::ckIntOf(json,"value[i].reminderMinutesBeforeStart")
        isReminderOn = CkJsonObject::ckBoolOf(json,"value[i].isReminderOn")
        i = i + 1
    Wend


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(jsonToken)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure