C
C
Initiate Resumable Upload Session
See more Google Cloud Storage Examples
Initiate a Google Cloud Storage resumable upload session..Chilkat C Downloads
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkHttpResponse.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkJsonObject jsonToken;
HCkJsonObject jsonMetaData;
const char *url;
HCkHttpResponse resp;
int statusCode;
const char *sessionUrl;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
jsonToken = CkJsonObject_Create();
success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/googleCloudStorage.json");
if (success == FALSE) {
printf("%s\n",CkJsonObject_lastErrorText(jsonToken));
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
return;
}
jsonMetaData = CkJsonObject_Create();
CkJsonObject_UpdateString(jsonMetaData,"contentType","image/jpeg");
// Adds the "Authorization: Bearer <access_token>" header..
CkHttp_putAuthToken(http,CkJsonObject_stringOf(jsonToken,"access_token"));
CkHttp_SetUrlVar(http,"bucket_name","chilkat-bucket-b");
CkHttp_SetUrlVar(http,"object_name","penguins2.jpg");
url = "https://storage.googleapis.com/upload/storage/v1/b/{$bucket_name}/o?uploadType=resumable&name={$object_name}";
resp = CkHttpResponse_Create();
success = CkHttp_HttpJson(http,"POST",url,jsonMetaData,"application/json",resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkJsonObject_Dispose(jsonMetaData);
CkHttpResponse_Dispose(resp);
return;
}
statusCode = CkHttpResponse_getStatusCode(resp);
printf("response status code = %d\n",statusCode);
sessionUrl = "";
if (statusCode != 200) {
printf("%s\n",CkHttpResponse_bodyStr(resp));
}
else {
// The session URL will be used to upload the file in chunks, in subsequent HTTP POSTs...
sessionUrl = CkHttpResponse_getHeaderField(resp,"Location");
printf("Session URL = %s\n",sessionUrl);
}
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkJsonObject_Dispose(jsonMetaData);
CkHttpResponse_Dispose(resp);
}