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

Retrieve the metadata for a DriveItem

See more OneDrive Examples

Fetches the JSON metadata for a DriveItem.

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;
  json: TJsonObject;
  http: THttp;
  metaData: string;
  odata_context: string;
  microsoft_graph_downloadUrl: string;
  createdDateTime: string;
  cTag: string;
  eTag: string;
  id: string;
  lastModifiedDateTime: string;
  name: string;
  size: Integer;
  webUrl: string;
  ratingRating: Integer;
  ratingSimpleRating: Integer;
  createdByUserDisplayName: string;
  createdByUserId: string;
  lastModifiedByUserDisplayName: string;
  lastModifiedByUserId: string;
  parentReferenceDriveId: string;
  parentReferenceDriveType: string;
  parentReferenceId: string;
  parentReferenceName: string;
  parentReferencePath: string;
  fileMimeType: string;
  fileHashesSha1Hash: string;
  fileSystemInfoCreatedDateTime: string;
  fileSystemInfoLastModifiedDateTime: string;
  imageHeight: Integer;
  imageWidth: Integer;
  photoTakenDateTime: string;
  sharedScope: string;
  sharedOwnerUserDisplayName: string;
  sharedOwnerUserId: string;

begin
  success := False;

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

  //  Use your client ID, client secret, and tenant ID in the following lines
  json := TJsonObject.Create;
  json.UpdateString('client_id','2871da2c-8176-4b7f-869b-2311aa82e743');
  json.UpdateString('client_secret','2hu9Q~r5QuryUcEkNbg1btLtnfU1VUXzhSCG6brH');
  json.UpdateString('scope','https://graph.microsoft.com/.default');
  json.UpdateString('token_endpoint','https://login.microsoftonline.com/114d7ed6-71bf-4dbe-a866-748364121bf2/oauth2/v2.0/token');

  http := THttp.Create;
  http.AuthToken := json.Emit();

  //  Sends the following GET request:
  //  GET https://graph.microsoft.com/v1.0/users/{user-id}/drive/root:/{item-path}

  //  Make sure to automatically follow redirects
  http.FollowRedirects := True;

  //  This example will get the metadata for /Misc/wildlife/penguins.jpg
  http.SetUrlVar('item_path','Misc//penguins.jpg');
  http.SetUrlVar('user_id','4fe732c3-322e-4a6b-b729-2fd1eb5c6104');

  metaData := http.QuickGetStr('https://graph.microsoft.com/v1.0/users/{$user_id}/drive/root:/{$item_path}');
  if (http.LastMethodSuccess <> True) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  json.EmitCompact := False;
  success := json.Load(metaData);
  WriteLn(json.Emit());

  //  Sample JSON metadata result:

  //  {
  //    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('admin%40chilkat.io')/drive/root/$entity",
  //    "@microsoft.graph.downloadUrl": "https://public.dm.files.1drv.com/y4mh0z_Og97O7Q...o2q1HhNBU",
  //    "createdDateTime": "2017-06-04T20:40:22.48Z",
  //    "cTag": "aYzozQTMzRkNFQjlCNzRDQzE1ITQ4NzIuMjU3",
  //    "eTag": "aM0EzM0ZDRUI5Qjc0Q0MxNSE0ODcyLjY",
  //    "id": "3A33FCEB9B74CC15!4872",
  //    "lastModifiedDateTime": "2018-10-20T18:22:29.977Z",
  //    "name": "penguins.jpg",
  //    "size": 777835,
  //    "webUrl": "https://1drv.ms/i/s!ABXMdJvr_DM6pgg",
  //    "rating": {
  //      "rating": 75,
  //      "simpleRating": 4
  //    },
  //    "createdBy": {
  //      "user": {
  //        "displayName": "Joe Programmer",
  //        "id": "3a33fceb9b74cc15"
  //      }
  //    },
  //    "lastModifiedBy": {
  //      "user": {
  //        "displayName": "Joe Programmer",
  //        "id": "3a33fceb9b74cc15"
  //      }
  //    },
  //    "parentReference": {
  //      "driveId": "3a33fceb9b74cc15",
  //      "driveType": "personal",
  //      "id": "3A33FCEB9B74CC15!4871",
  //      "name": "wildlife",
  //      "path": "/drive/root:/Misc/wildlife"
  //    },
  //    "file": {
  //      "mimeType": "image/jpeg",
  //      "hashes": {
  //        "sha1Hash": "DF7BE9DC4F467187783ACA68C7CE98E4DF2172D0"
  //      }
  //    },
  //    "fileSystemInfo": {
  //      "createdDateTime": "2017-06-04T20:40:22.48Z",
  //      "lastModifiedDateTime": "2009-07-14T05:32:31.674Z"
  //    },
  //    "image": {
  //      "height": 768,
  //      "width": 1024
  //    },
  //    "photo": {
  //      "takenDateTime": "2008-02-18T05:07:31Z"
  //    },
  //    "shared": {
  //      "scope": "users",
  //      "owner": {
  //        "user": {
  //          "displayName": "Joe Programmer",
  //          "id": "3a33fceb9b74cc15"
  //        }
  //      }
  //    }
  //  }
  //  

  //  If the response status code was not 200, then it failed.
  if (http.LastStatus <> 200) then
    begin
      WriteLn('Response Status Code = ' + http.LastStatus);
      WriteLn('Failed.');
      Exit;
    end;

  //  Demonstrate how to parse the JSON...

  odata_context := json.StringOf('"@odata.context"');
  microsoft_graph_downloadUrl := json.StringOf('"@microsoft.graph.downloadUrl"');
  createdDateTime := json.StringOf('createdDateTime');
  cTag := json.StringOf('cTag');
  eTag := json.StringOf('eTag');
  id := json.StringOf('id');
  lastModifiedDateTime := json.StringOf('lastModifiedDateTime');
  name := json.StringOf('name');
  size := json.IntOf('size');
  webUrl := json.StringOf('webUrl');
  ratingRating := json.IntOf('rating.rating');
  ratingSimpleRating := json.IntOf('rating.simpleRating');
  createdByUserDisplayName := json.StringOf('createdBy.user.displayName');
  createdByUserId := json.StringOf('createdBy.user.id');
  lastModifiedByUserDisplayName := json.StringOf('lastModifiedBy.user.displayName');
  lastModifiedByUserId := json.StringOf('lastModifiedBy.user.id');
  parentReferenceDriveId := json.StringOf('parentReference.driveId');
  parentReferenceDriveType := json.StringOf('parentReference.driveType');
  parentReferenceId := json.StringOf('parentReference.id');
  parentReferenceName := json.StringOf('parentReference.name');
  parentReferencePath := json.StringOf('parentReference.path');
  fileMimeType := json.StringOf('file.mimeType');
  fileHashesSha1Hash := json.StringOf('file.hashes.sha1Hash');
  fileSystemInfoCreatedDateTime := json.StringOf('fileSystemInfo.createdDateTime');
  fileSystemInfoLastModifiedDateTime := json.StringOf('fileSystemInfo.lastModifiedDateTime');
  imageHeight := json.IntOf('image.height');
  imageWidth := json.IntOf('image.width');
  photoTakenDateTime := json.StringOf('photo.takenDateTime');
  sharedScope := json.StringOf('shared.scope');
  sharedOwnerUserDisplayName := json.StringOf('shared.owner.user.displayName');
  sharedOwnerUserId := json.StringOf('shared.owner.user.id');


  json.Free;
  http.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.