Sample code for 30+ languages & platforms
PureBasic

OneDrive -- Upload a String

See more OneDrive Examples

Uploads a string to the signed-in user's OneDrive. This uses OneDrive's simple upload API to upload in a single API call, which only supports uploads up to 4MB in size. (See the other example(s) for uploading larger files.)

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 the OAuth client credentials flow.
    ; See How to Create an Azure App Registration for OAuth 2.0 Client Credentials

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

    ; To upload in a single HTTP request, send a PUT request such as the following:

    ; 	PUT /v1.0/users/{user_id}/drive/root:/{item-path}:/content
    ; 	Content-type: text/plain
    ; 	Content-Length: <the actual content length>
    ; 
    ; 	The contents of the file goes here.

    ; Note: Chilkat automatically adds the Content-Length header.

    ; This example will upload a string that happens to be XML.
    someString.s = "<location><city>Chicago</city><state>IL</state></location>"

    ; Upload to /TestDir/location.xml
    CkHttp::ckSetUrlVar(http,"dest_path","/TestDir/location.xml")
    CkHttp::ckSetUrlVar(http,"user_id","4fe732c3-322e-4a6b-b729-2fd1eb5c6104")
    url.s = "https://graph.microsoft.com/v1.0/users/{$user_id}/drive/root:{$dest_path}:/content"

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

    success = CkHttp::ckHttpStr(http,"PUT",url,someString,"utf-8","application/xml",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(json)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; If successful, a 201 status code is returned, with the driveItem object in the resp body for the newly created file.
    CkJsonObject::setCkEmitCompact(json, 0)
    CkHttpResponse::ckGetBodyJson(resp,json)

    If CkHttpResponse::ckStatusCode(resp) <> 201

        Debug CkJsonObject::ckEmit(json)
        Debug "Response status = " + Str(CkHttpResponse::ckStatusCode(resp))
        CkJsonObject::ckDispose(json)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Success.  Examine the driveItem JSON object:
    Debug CkJsonObject::ckEmit(json)
    Debug "-- Success --"

    ; Here is a sample successful response:

    ; {
    ;   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('me')/drive/root/$entity",
    ;   "@microsoft.graph.downloadUrl": "https://s5ucmg.dm2301.livefilestore.com/y4pq2RG4U4D0uXV5Ee9kg_xRz3caBiFdiAe9arIAtryj6INGMv0KYr6E3HufsYkq7Xe_4Wue8mq4t-A_TU8zwKLqI91dH4eNx8XOUdJccqozk8jsLIy8TFkpaCcWuKbUjDPmed_38TbLIOtRofTE3o3Cw32_6b1T_ZTvgmA4erklHjz5f99ZF4P6jTGBfy6AjlK94aupem4AQ5BnWmcvBXVIuUajEyJT4M48SuWklvHtlc",
    ;   "createdBy": {
    ;     "application": {
    ;       "displayName": "Chilkat",
    ;       "id": "441c9990"
    ;     },
    ;     "user": {
    ;       "displayName": "Matt Smith",
    ;       "id": "3a33fceb9b74cc15"
    ;     }
    ;   },
    ;   "createdDateTime": "2017-06-03T17:56:38.413Z",
    ;   "cTag": "aYzozQTMzRkNFQjlCNzRDQzE1ITQ4NjYuMjU3",
    ;   "eTag": "aM0EzM0ZDRUI5Qjc0Q0MxNSE0ODY2LjA",
    ;   "id": "3A33FCEB9B74CC15!4866",
    ;   "lastModifiedBy": {
    ;     "application": {
    ;       "displayName": "Chilkat",
    ;       "id": "441c9990"
    ;     },
    ;     "user": {
    ;       "displayName": "Matt Smith",
    ;       "id": "3a33fceb9b74cc15"
    ;     }
    ;   },
    ;   "lastModifiedDateTime": "2017-06-03T17:56:38.413Z",
    ;   "name": "location.xml",
    ;   "parentReference": {
    ;     "driveId": "3a33fceb9b74cc15",
    ;     "id": "3A33FCEB9B74CC15!4862",
    ;     "name": "someFolder",
    ;     "path": "/drive/root:/someFolder"
    ;   },
    ;   "size": 58,
    ;   "webUrl": "https://1drv.ms/u/s!ABXMdJvr_DM6pgI",
    ;   "file": {
    ;     "hashes": {
    ;       "sha1Hash": "FE95A5A234123C45C03439CB33309991B751D7C9"
    ;     },
    ;     "mimeType": "application/xml"
    ;   },
    ;   "fileSystemInfo": {
    ;     "createdDateTime": "2017-06-03T17:56:38.413Z",
    ;     "lastModifiedDateTime": "2017-06-03T17:56:38.413Z"
    ;   }
    ; }


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


    ProcedureReturn
EndProcedure