Sample code for 30+ languages & platforms
PureBasic

Get a Google Calendar

See more Google Calendar Examples

Demonstrates how to get a particular Google Calendar. The calendar can be referenced by the calendar ID, or by the keyword "primary".

Chilkat PureBasic Downloads

PureBasic
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.

    ; This example uses a previously obtained access token having permission for the 
    ; Google Calendar scope.

    ; In this example, Get Google Calendar OAuth2 Access Token, the access
    ; token was saved to a JSON file.  This example fetches the access token from the file..
    jsonToken.i = CkJsonObject::ckCreate()
    If jsonToken.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/googleCalendar.json")
    If CkJsonObject::ckHasMember(jsonToken,"access_token") = 0
        Debug "No access token found."
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

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

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

    ; Let's get the primary calendar.
    jsonResponse.s = CkHttp::ckQuickGetStr(http,"https://www.googleapis.com/calendar/v3/users/me/calendarList/primary")
    If CkHttp::ckLastMethodSuccess(http) <> 1
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    Debug jsonResponse

    ; A sample response is:

    ; {
    ;  "kind": "calendar#calendarListEntry",
    ;  "etag": "\"1465249947472000\"",
    ;  "id": "support@chilkatcloud.com",
    ;  "summary": "support@chilkatcloud.com",
    ;  "timeZone": "America/Chicago",
    ;  "colorId": "14",
    ;  "backgroundColor": "#9fe1e7",
    ;  "foregroundColor": "#000000",
    ;  "selected": true,
    ;  "accessRole": "owner",
    ;  "defaultReminders": [
    ;   {
    ;    "method": "popup",
    ;    "minutes": 10
    ;   }
    ;  ],
    ;  "notificationSettings": {
    ;   "notifications": [
    ;    {
    ;     "type": "eventCreation",
    ;     "method": "email"
    ;    },
    ;    {
    ;     "type": "eventChange",
    ;     "method": "email"
    ;    },
    ;    {
    ;     "type": "eventCancellation",
    ;     "method": "email"
    ;    },
    ;    {
    ;     "type": "eventResponse",
    ;     "method": "email"
    ;    }
    ;   ]
    ;  },
    ;  "primary": true
    ; }

    ; It can be parsed like this:
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json,jsonResponse)

    Debug "kind: " + CkJsonObject::ckStringOf(json,"kind")
    Debug "id: " + CkJsonObject::ckStringOf(json,"id")

    ; Examine the notification settings, if any..
    numSettings.i = CkJsonObject::ckSizeOfArray(json,"notificationSettings.notifications")
    If numSettings > 0
        i.i = 0
        While i < numSettings
            CkJsonObject::setCkI(json, i)
            Debug "Notification Type: " + CkJsonObject::ckStringOf(json,"notificationSettings.notifications[i].type")
            Debug "Notification Method: " + CkJsonObject::ckStringOf(json,"notificationSettings.notifications[i].method")
            i = i + 1
        Wend
    EndIf



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


    ProcedureReturn
EndProcedure