C
C
Shippo Create a New Manifest
See more Shippo Examples
Demonstrates how to create a manifest for your shipments.Chilkat C Downloads
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkHttpResponse.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkJsonObject json;
HCkHttpResponse resp;
HCkStringBuilder sbResponseBody;
HCkJsonObject jResp;
int respStatusCode;
const char *strVal;
const char *address_from;
const char *carrier_account;
const char *object_created;
const char *object_id;
const char *object_owner;
const char *object_updated;
const char *shipment_date;
const char *status;
int i;
int count_i;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// Implements the following CURL command:
// curl https://api.goshippo.com/manifests/
// -H "Authorization: ShippoToken shippo_test_831a7a042784f523b95db65444e6e084b636764b" \
// -H "Content-Type: application/json" \
// -d '{
// "carrier_account": "b741b99f95e841639b54272834bc478c",
// "shipment_date": "2014-05-16T23:59:59Z",
// "address_from": "28828839a2b04e208ac2aa4945fbca9a",
// "transactions": [
// "64bba01845ef40d29374032599f22588",
// "c169aa586a844cc49da00d0272b590e1"
// ],
// "async": false
// }'
// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON
// The following JSON is sent in the request body.
// {
// "carrier_account": "b741b99f95e841639b54272834bc478c",
// "shipment_date": "2014-05-16T23:59:59Z",
// "address_from": "28828839a2b04e208ac2aa4945fbca9a",
// "transactions": [
// "64bba01845ef40d29374032599f22588",
// "c169aa586a844cc49da00d0272b590e1"
// ],
// "async": false
// }
json = CkJsonObject_Create();
CkJsonObject_UpdateString(json,"carrier_account","b741b99f95e841639b54272834bc478c");
CkJsonObject_UpdateString(json,"shipment_date","2014-05-16T23:59:59Z");
CkJsonObject_UpdateString(json,"address_from","28828839a2b04e208ac2aa4945fbca9a");
CkJsonObject_UpdateString(json,"transactions[0]","64bba01845ef40d29374032599f22588");
CkJsonObject_UpdateString(json,"transactions[1]","c169aa586a844cc49da00d0272b590e1");
CkJsonObject_UpdateBool(json,"async",FALSE);
CkHttp_SetRequestHeader(http,"Authorization","ShippoToken shippo_test_831a7a042784f523b95db65444e6e084b636764b");
CkHttp_SetRequestHeader(http,"Content-Type","application/json");
resp = CkHttpResponse_Create();
success = CkHttp_HttpJson(http,"POST","https://api.goshippo.com/manifests/",json,"application/json",resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
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));
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);
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)
// {
// "address_from": "28828839a2b04e208ac2aa4945fbca9a",
// "carrier_account": "b741b99f95e841639b54272834bc478c",
// "documents": [
// "https://shippo-delivery.s3.amazonaws.com/0fadebf6f60c4aca95fa01bcc59c79ae.pdf?Signature=tlQU3RECwdHUQJQadwqg5bAzGFQ%3D&Expires=1402803835&AWSAccessKeyId=AKIAJTHP3LLFMYAWALIA"
// ],
// "object_created": "2014-05-16T03:43:52.765Z",
// "object_id": "0fadebf6f60c4aca95fa01bcc59c79ae",
// "object_owner": "mrhippo@goshippo.com",
// "object_updated": "2014-05-16T03:43:55.445Z",
// "shipment_date": "2014-05-16T23:59:59Z",
// "status": "SUCCESS",
// "transactions": [
// "64bba01845ef40d29374032599f22588",
// "c169aa586a844cc49da00d0272b590e1"
// ]
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
// See this example explaining how this memory should be used: const char * functions.
address_from = CkJsonObject_stringOf(jResp,"address_from");
carrier_account = CkJsonObject_stringOf(jResp,"carrier_account");
object_created = CkJsonObject_stringOf(jResp,"object_created");
object_id = CkJsonObject_stringOf(jResp,"object_id");
object_owner = CkJsonObject_stringOf(jResp,"object_owner");
object_updated = CkJsonObject_stringOf(jResp,"object_updated");
shipment_date = CkJsonObject_stringOf(jResp,"shipment_date");
status = CkJsonObject_stringOf(jResp,"status");
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"documents");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
strVal = CkJsonObject_stringOf(jResp,"documents[i]");
i = i + 1;
}
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"transactions");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
strVal = CkJsonObject_stringOf(jResp,"transactions[i]");
i = i + 1;
}
CkHttp_Dispose(http);
CkJsonObject_Dispose(json);
CkHttpResponse_Dispose(resp);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
}