Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

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 Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.JsonObject,
  Chilkat.Http;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  jsonToken: TJsonObject;
  http: THttp;
  jsonResponse: string;
  json: TJsonObject;
  numSettings: Integer;
  i: Integer;

begin
  success := False;

  //  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 := TJsonObject.Create;
  success := jsonToken.LoadFile('qa_data/tokens/googleCalendar.json');
  if (jsonToken.HasMember('access_token') = False) then
    begin
      WriteLn('No access token found.');
      Exit;
    end;
  http := THttp.Create;
  http.AuthToken := jsonToken.StringOf('access_token');

  //  Let's get the primary calendar.
  jsonResponse := http.QuickGetStr('https://www.googleapis.com/calendar/v3/users/me/calendarList/primary');
  if (http.LastMethodSuccess <> True) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn(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 := TJsonObject.Create;
  json.Load(jsonResponse);

  WriteLn('kind: ' + json.StringOf('kind'));
  WriteLn('id: ' + json.StringOf('id'));

  //  Examine the notification settings, if any..
  numSettings := json.SizeOfArray('notificationSettings.notifications');
  if (numSettings > 0) then
    begin
      i := 0;
      while i < numSettings do
        begin
          json.I := i;
          WriteLn('Notification Type: ' + json.StringOf('notificationSettings.notifications[i].type'));
          WriteLn('Notification Method: ' + json.StringOf('notificationSettings.notifications[i].method'));
          i := i + 1;
        end;

    end;


  jsonToken.Free;
  http.Free;
  json.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.