Zig
Zig
ChartURL - Create a Signed URL
See more HTTP Misc Examples
Demonstrates how to create a signed URL for ChartURL.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const crypt = try chilkat.Crypt2.init();
defer crypt.deinit();
// Example key: "dek-d7a46236eda961a6c3c18ffcc6b077ba87d27e9ae85f7842c6d427c265dd5f69d5131308d93332353d4a55a4b1160fcf516515a4a9f0aa50fbf2d7a2e7d0f1c5"
const key = "charturl-sign-encrypt-key";
// Example token: "dt-RwYN"
const token = "charturl-token";
const slug = "weekly-activity";
const data = "{ \"options\": {\"data\": {\"columns\": [[\"This Week\",10,13],[\"Last Week\",9,5]]}}}";
crypt.setHashAlgorithm("SHA256");
crypt.setMacAlgorithm("HMAC");
crypt.setMacKeyString(key) catch {};
crypt.setEncodingMode("base64");
const json = try chilkat.JsonObject.init();
defer json.deinit();
json.load(data) catch {};
std.debug.print("json = {s}\n", .{try json.emit(alloc)});
const sig = try crypt.macStringENC(alloc, try json.emit(alloc));
const sb_url = try chilkat.StringBuilder.init();
defer sb_url.deinit();
sb_url.append("https://charturl.com/i/") catch {};
sb_url.append(token) catch {};
sb_url.append("/") catch {};
sb_url.append(slug) catch {};
sb_url.append("?d=") catch {};
sb_url.append(try crypt.encodeString(alloc, try json.emit(alloc), "utf-8", "url")) catch {};
sb_url.append("&s=") catch {};
sb_url.append(try crypt.encodeString(alloc, sig, "utf-8", "url")) catch {};
std.debug.print("Signed URL: {s}\n", .{try sb_url.getAsString(alloc)});
}