C
C
ChartURL - Create a Signed URL
See more HTTP Misc Examples
Demonstrates how to create a signed URL for ChartURL.Chilkat C Downloads
#include <C_CkCrypt2.h>
#include <C_CkJsonObject.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
HCkCrypt2 crypt;
const char *key;
const char *token;
const char *slug;
const char *data;
HCkJsonObject json;
const char *sig;
HCkStringBuilder sbUrl;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
crypt = CkCrypt2_Create();
// Example key: "dek-d7a46236eda961a6c3c18ffcc6b077ba87d27e9ae85f7842c6d427c265dd5f69d5131308d93332353d4a55a4b1160fcf516515a4a9f0aa50fbf2d7a2e7d0f1c5"
key = "charturl-sign-encrypt-key";
// Example token: "dt-RwYN"
token = "charturl-token";
slug = "weekly-activity";
data = "{ \"options\": {\"data\": {\"columns\": [[\"This Week\",10,13],[\"Last Week\",9,5]]}}}";
CkCrypt2_putHashAlgorithm(crypt,"SHA256");
CkCrypt2_putMacAlgorithm(crypt,"HMAC");
CkCrypt2_SetMacKeyString(crypt,key);
CkCrypt2_putEncodingMode(crypt,"base64");
json = CkJsonObject_Create();
CkJsonObject_Load(json,data);
printf("json = %s\n",CkJsonObject_emit(json));
sig = CkCrypt2_macStringENC(crypt,CkJsonObject_emit(json));
sbUrl = CkStringBuilder_Create();
CkStringBuilder_Append(sbUrl,"https://charturl.com/i/");
CkStringBuilder_Append(sbUrl,token);
CkStringBuilder_Append(sbUrl,"/");
CkStringBuilder_Append(sbUrl,slug);
CkStringBuilder_Append(sbUrl,"?d=");
CkStringBuilder_Append(sbUrl,CkCrypt2_encodeString(crypt,CkJsonObject_emit(json),"utf-8","url"));
CkStringBuilder_Append(sbUrl,"&s=");
CkStringBuilder_Append(sbUrl,CkCrypt2_encodeString(crypt,sig,"utf-8","url"));
printf("Signed URL: %s\n",CkStringBuilder_getAsString(sbUrl));
CkCrypt2_Dispose(crypt);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbUrl);
}