Sample code for 30+ languages & platforms
Zig Requires Chilkat v11.0.0+

VoiceBase -- Hello World (Get the Media Collection Listing)

See more VoiceBase Examples

This example serves to both verify that your Bearer Token is valid by retrieving JSON that contains information about your media collection.

Chilkat Zig Downloads

Zig
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 HTTP API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // Insert your Bearer token here:
    const access_token = "VOICEBASE_TOKEN";

    const http = try chilkat.Http.init();
    defer http.deinit();

    // Add the access (bearer) token to the request, which is a header
    // having the following format:
    // Authorization: Bearer <userAccessToken>
    const sb_auth = try chilkat.StringBuilder.init();
    defer sb_auth.deinit();
    sb_auth.append("Bearer ") catch {};
    sb_auth.append(access_token) catch {};
    http.setRequestHeader("Authorization", try sb_auth.getAsString(alloc));

    const str_json = http.quickGetStr(alloc, "https://apis.voicebase.com/v2-beta/media") catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    // The response should be JSON, even if an error.
    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.load(str_json) catch {};
    json.setEmitCompact(false);

    std.debug.print("Response status code = {d}\n", .{http.getLastStatus()});

    if (http.getLastStatus() != 200) {
        std.debug.print("{s}\n", .{try json.emit(alloc)});
        std.debug.print("Failed\n", .{});
        return;
    }

    // See the sample JSON response below..

    // Iterate over the JSON like this:
    const dt = try chilkat.DateTime.init();
    defer dt.deinit();
    const dt_obj = try chilkat.DtObj.init();
    defer dt_obj.deinit();

    const media_count = json.sizeOfArray("media");
    var i: i32 = 0;
    while (i < media_count) {
        json.setI(i);

        std.debug.print("-- {d} --\n", .{i});
        std.debug.print("  mediaId: {s}\n", .{try json.stringOf(alloc, "media[i].mediaId")});
        std.debug.print("  status: {s}\n", .{try json.stringOf(alloc, "media[i].status")});
        std.debug.print("  contentType: {s}\n", .{try json.stringOf(alloc, "media[i].metadata.contentType")});
        std.debug.print("  milliseconds: {s}\n", .{try json.stringOf(alloc, "media[i].metadata.length.milliseconds")});
        std.debug.print("  descriptive: {s}\n", .{try json.stringOf(alloc, "media[i].metadata.length.descriptive")});
        const date_created = try json.stringOf(alloc, "media[i].dateCreated");
        dt.setFromTimestamp(date_created) catch {};

        const local_time = true;
        dt.toDtObj(local_time, dt_obj);

        std.debug.print("  {d}/{d}  {d}:{d}\n", .{ dt_obj.getMonth(), dt_obj.getDay(), dt_obj.getHour(), dt_obj.getMinute() });

        i = i + 1;
    }

    std.debug.print("Finished.\n", .{});

    // A sample JSON response:

    // {
    //   "_links": {
    //     "self": {
    //       "href": "/v2-beta/media"
    //     }
    //   },
    //   "media": [
    //     {
    //       "mediaId": "26063536-FFFF-4020-93ba-0878112d834b",
    //       "status": "finished",
    //       "metadata": {
    //         "contentType": "audio/x-wav",
    //         "length": {
    //           "milliseconds": 85141,
    //           "descriptive": "85.0 sec"
    //         }
    //       },
    //       "dateCreated": "2017-01-19T16:49:32.000Z"
    //     },
    //     {
    //       "mediaId": "8163fbbc-FFFF-4794-aa95-045420bb321d",
    //       "status": "finished",
    //       "metadata": {
    //         "contentType": "audio/x-wav",
    //         "length": {
    //           "milliseconds": 65342,
    //           "descriptive": "65.0 sec"
    //         }
    //       },
    //       "dateCreated": "2017-01-19T20:08:49.000Z"
    //     },
    // ...
    // ...
    //     {
    //       "mediaId": "b01e27be-FFFF-4b62-8802-6dc66a75c4d3",
    //       "status": "finished",
    //       "metadata": {
    //         "contentType": "audio/x-wav",
    //         "length": {
    //           "milliseconds": 11581,
    //           "descriptive": "11.0 sec"
    //         }
    //       },
    //       "dateCreated": "2017-02-06T20:55:43.000Z"
    //     }
    //   ]
    // }
}