Sample code for 30+ languages & platforms
PureBasic

Retrieve the metadata for a DriveItem

See more OneDrive Examples

Fetches the JSON metadata for a DriveItem.

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.

    ; Use your client ID, client secret, and tenant ID in the following lines
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"client_id","2871da2c-8176-4b7f-869b-2311aa82e743")
    CkJsonObject::ckUpdateString(json,"client_secret","2hu9Q~r5QuryUcEkNbg1btLtnfU1VUXzhSCG6brH")
    CkJsonObject::ckUpdateString(json,"scope","https://graph.microsoft.com/.default")
    CkJsonObject::ckUpdateString(json,"token_endpoint","https://login.microsoftonline.com/114d7ed6-71bf-4dbe-a866-748364121bf2/oauth2/v2.0/token")

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

    CkHttp::setCkAuthToken(http, CkJsonObject::ckEmit(json))

    ; 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
    CkHttp::setCkFollowRedirects(http, 1)

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

    metaData.s = CkHttp::ckQuickGetStr(http,"https://graph.microsoft.com/v1.0/users/{$user_id}/drive/root:/{$item_path}")
    If CkHttp::ckLastMethodSuccess(http) <> 1
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(json)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    CkJsonObject::setCkEmitCompact(json, 0)
    success = CkJsonObject::ckLoad(json,metaData)
    Debug CkJsonObject::ckEmit(json)

    ; 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 CkHttp::ckLastStatus(http) <> 200
        Debug "Response Status Code = " + Str(CkHttp::ckLastStatus(http))
        Debug "Failed."
        CkJsonObject::ckDispose(json)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    ; Demonstrate how to parse the JSON...

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


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


    ProcedureReturn
EndProcedure