Sample code for 30+ languages & platforms
PureBasic

Initiate Resumable Upload Session

See more Google Cloud Storage Examples

Initiate a Google Cloud Storage resumable upload session..

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

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

    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/googleCloudStorage.json")
    If success = 0
        Debug CkJsonObject::ckLastErrorText(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

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

    CkJsonObject::ckUpdateString(jsonMetaData,"contentType","image/jpeg")

    ; Adds the "Authorization: Bearer <access_token>" header..
    CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))

    CkHttp::ckSetUrlVar(http,"bucket_name","chilkat-bucket-b")
    CkHttp::ckSetUrlVar(http,"object_name","penguins2.jpg")
    url.s = "https://storage.googleapis.com/upload/storage/v1/b/{$bucket_name}/o?uploadType=resumable&name={$object_name}"
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

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

    statusCode.i = CkHttpResponse::ckStatusCode(resp)
    Debug "response status code = " + Str(statusCode)

    sessionUrl.s = ""

    If statusCode <> 200
        Debug CkHttpResponse::ckBodyStr(resp)
    Else
        ; The session URL will be used to upload the file in chunks, in subsequent HTTP POSTs...
        sessionUrl = CkHttpResponse::ckGetHeaderField(resp,"Location")
        Debug "Session URL = " + sessionUrl
    EndIf



    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(jsonToken)
    CkJsonObject::ckDispose(jsonMetaData)
    CkHttpResponse::ckDispose(resp)


    ProcedureReturn
EndProcedure