Unicode C++
Unicode C++
Bunny Sign URL and then Download using Signed URL
See more Bunny CDN Examples
Shows how to sign a URL for BunnyCDN Token Authentication and then use it to download.Chilkat Unicode C++ Downloads
#include <CkUrlW.h>
#include <CkDateTimeW.h>
#include <CkStringBuilderW.h>
#include <CkHttpW.h>
void ChilkatSample(void)
{
bool success = false;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const wchar_t *mySecurityKey = L"e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed";
const wchar_t *url = L"https://test.b-cdn.net/sample-pdf-with-images.pdf";
// Extract the URL components.
CkUrlW urlObj;
urlObj.ParseUrl(url);
const wchar_t *url_scheme = L"https";
if (urlObj.get_Ssl() == false) {
url_scheme = L"http";
}
const wchar_t *url_host = urlObj.host();
const wchar_t *url_path = urlObj.path();
// Calculate an expiration time 1 hour from the current date/time.
CkDateTimeW expTime;
expTime.SetFromCurrentSystemTime();
expTime.AddSeconds(3600);
const wchar_t *expires = expTime.getAsUnixTimeStr(false);
wprintf(L"Expires = %s\n",expires);
// Create the string to hash
CkStringBuilderW sbToHash;
sbToHash.Append(mySecurityKey);
sbToHash.Append(url_path);
sbToHash.Append(expires);
// Base64Url encoding is the same as base64, except "-" is used instead of "+",
// "_" is used instead of "/", and no "=" padding is added.
const wchar_t *token = sbToHash.getHash(L"sha256",L"base64Url",L"utf-8");
CkStringBuilderW sbSignedUrl;
sbSignedUrl.Append(url_scheme);
sbSignedUrl.Append(L"://");
sbSignedUrl.Append(url_host);
sbSignedUrl.Append(url_path);
sbSignedUrl.Append(L"?token=");
sbSignedUrl.Append(token);
sbSignedUrl.Append(L"&expires=");
sbSignedUrl.Append(expires);
const wchar_t *signedUrl = sbSignedUrl.getAsString();
wprintf(L"Signed URL: %s\n",signedUrl);
// Use the signed URL to download the file.
CkHttpW http;
success = http.Download(signedUrl,L"c:/aaworkarea/sample.pdf");
if (success == false) {
wprintf(L"%s\n",http.lastErrorText());
}
else {
wprintf(L"Success.\n");
}
}