C
C
Shopware Upload Media (JPG File)
See more Shopware Examples
Demonstrates how to upload a media file to a Shopware shop.Chilkat C Downloads
#include <C_CkHttp.h>
#include <C_CkStringBuilder.h>
#include <C_CkBinData.h>
#include <C_CkJsonObject.h>
#include <C_CkHttpResponse.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkStringBuilder sbFileData;
HCkBinData bdFileData;
HCkJsonObject json;
HCkHttpResponse resp;
HCkStringBuilder sbResponseBody;
HCkJsonObject jResp;
int respStatusCode;
int dataId;
const char *dataLocation;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
CkHttp_putLogin(http,"api_username");
CkHttp_putPassword(http,"api_key");
CkHttp_putBasicAuth(http,TRUE);
// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON
// The following JSON is sent in the request body.
// {
// "file": "data:image/jpeg;base64,BASE64_DATA_HERE",
// "album": -9,
// "description": "image description",
// "userId": 5,
// "name": "my_image"
// }
sbFileData = CkStringBuilder_Create();
CkStringBuilder_Append(sbFileData,"data:image/jpeg;base64,");
bdFileData = CkBinData_Create();
success = CkBinData_LoadFile(bdFileData,"qa_data/jpg/starfish.jpg");
if (success == FALSE) {
printf("Failed to load file.\n");
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbFileData);
CkBinData_Dispose(bdFileData);
return;
}
CkStringBuilder_Append(sbFileData,CkBinData_getEncoded(bdFileData,"base64"));
json = CkJsonObject_Create();
CkJsonObject_UpdateString(json,"file",CkStringBuilder_getAsString(sbFileData));
CkJsonObject_UpdateInt(json,"album",-9);
CkJsonObject_UpdateString(json,"description","image description");
CkJsonObject_UpdateInt(json,"userId",5);
CkJsonObject_UpdateString(json,"name","my_image");
resp = CkHttpResponse_Create();
success = CkHttp_HttpJson(http,"POST","https://my-shopware-shop.com/api/media",json,"application/json",resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbFileData);
CkBinData_Dispose(bdFileData);
CkJsonObject_Dispose(json);
CkHttpResponse_Dispose(resp);
return;
}
sbResponseBody = CkStringBuilder_Create();
CkHttpResponse_GetBodySb(resp,sbResponseBody);
jResp = CkJsonObject_Create();
CkJsonObject_LoadSb(jResp,sbResponseBody);
CkJsonObject_putEmitCompact(jResp,FALSE);
printf("Response Body:\n");
printf("%s\n",CkJsonObject_emit(jResp));
// A 201 response code indicates success.
respStatusCode = CkHttpResponse_getStatusCode(resp);
printf("Response Status Code = %d\n",respStatusCode);
if (respStatusCode >= 400) {
printf("Response Header:\n");
printf("%s\n",CkHttpResponse_header(resp));
printf("Failed.\n");
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbFileData);
CkBinData_Dispose(bdFileData);
CkJsonObject_Dispose(json);
CkHttpResponse_Dispose(resp);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
return;
}
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "success": true,
// "data": {
// "id": 6862,
// "location": "http:\/\/my-shopware-shop.com\/api\/media\/6862"
// }
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
success = CkJsonObject_BoolOf(jResp,"success");
dataId = CkJsonObject_IntOf(jResp,"data.id");
dataLocation = CkJsonObject_stringOf(jResp,"data.location");
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbFileData);
CkBinData_Dispose(bdFileData);
CkJsonObject_Dispose(json);
CkHttpResponse_Dispose(resp);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
}