Sample code for 30+ languages & platforms
PureBasic

Insert a New Google Calendar Event

See more Google Calendar Examples

Demonstrates how to insert a new Google Calendar event.

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.

    ; 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"))

    ; Build a Google Calendar event:
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::setCkEmitCompact(json, 0)
    CkJsonObject::ckUpdateString(json,"kind","calendar#event")
    CkJsonObject::ckUpdateString(json,"summary","Eat Lou Malnati's Pizza")
    CkJsonObject::ckUpdateString(json,"start.dateTime","2021-03-12T12:00:00-05:00")
    CkJsonObject::ckUpdateString(json,"end.dateTime","2021-03-12T13:00:00-05:00")

    Debug CkJsonObject::ckEmit(json)

    ; This is the event JSON we'll be sending the HTTP POST:

    ; {
    ;   "kind": "calendar#event",
    ;   "summary": "Eat Lou Malnati's Pizza",
    ;   "start": {
    ;     "dateTime": "2021-03-12T12:00:00-05:00"
    ;   },
    ;   "end": {
    ;     "dateTime": "2021-03-12T13:00:00-05:00"
    ;   }
    ; }

    url.s = "https://www.googleapis.com/calendar/v3/calendars/{$calendarId}/events"
    CkHttp::ckSetUrlVar(http,"calendarId","primary")
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST",url,json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

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

    CkJsonObject::setCkEmitCompact(jsonResp, 0)
    CkJsonObject::ckLoad(jsonResp,CkHttpResponse::ckBodyStr(resp))

    If CkHttpResponse::ckStatusCode(resp) = 200
        ; Success.
        ; The newly created event resource JSON is returned.
        Debug CkJsonObject::ckEmit(jsonResp)
    Else
        If CkHttpResponse::ckStatusCode(resp) = 401
            Debug "Try refreshing the access token and then retry..."
        EndIf

        ; Failed. 
        ; Show the JSON error response.
        Debug CkJsonObject::ckEmit(jsonResp)
    EndIf

    ; A successful response body:

    ; {
    ;   "kind": "calendar#event",
    ;   "etag": "\"3004969011208000\"",
    ;   "id": "v7kvmsvsoms3hjl5uq423jqhb0",
    ;   "status": "confirmed",
    ;   "htmlLink": "https://www.google.com/calendar/event?eid=djdrdm1zdnNvbXMzaGpsNXVxNDIzanFoYjAgc3VwcG9ydEBjaGlsa2F0Y2xvdWQuY29t",
    ;   "created": "2017-08-11T20:48:25.000Z",
    ;   "updated": "2017-08-11T20:48:25.604Z",
    ;   "summary": "Eat Lou Malnati's Pizza",
    ;   "creator": {
    ;     "email": "support@chilkatcloud.com",
    ;     "self": true
    ;   },
    ;   "organizer": {
    ;     "email": "support@chilkatcloud.com",
    ;     "self": true
    ;   },
    ;   "start": {
    ;     "dateTime": "2017-08-12T12:00:00-05:00"
    ;   },
    ;   "end": {
    ;     "dateTime": "2017-08-12T13:00:00-05:00"
    ;   },
    ;   "iCalUID": "v7kvmsvsoms3hjl5uq423jqhb0@google.com",
    ;   "sequence": 0,
    ;   "hangoutLink": "https://plus.google.com/hangouts/_/chilkatcloud.com/support?hceid=c3VwcG9ydEBjaGlsa2F0Y2xvdWQuY29t.v7kvmsvsoms3hjl5uq423jqhb0",
    ;   "reminders": {
    ;     "useDefault": true
    ;   }
    ; }


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


    ProcedureReturn
EndProcedure