use std.json for the json formatting

This commit is contained in:
Emil Lerch 2026-03-06 16:42:50 -08:00
parent 373c30d947
commit 4b2493afe0
Signed by: lobo
GPG key ID: A7B62D657EF764F8

View file

@ -58,18 +58,18 @@ pub fn lookupCusips(
) ![]FigiResult { ) ![]FigiResult {
if (cusips.len == 0) return try allocator.alloc(FigiResult, 0); if (cusips.len == 0) return try allocator.alloc(FigiResult, 0);
// Build JSON request body: [{"idType":"ID_CUSIP","idValue":"..."},...] const Job = struct { idType: []const u8, idValue: []const u8 };
var body_buf: std.ArrayList(u8) = .empty;
defer body_buf.deinit(allocator);
try body_buf.append(allocator, '['); // Build jobs array
var jobs = try allocator.alloc(Job, cusips.len);
defer allocator.free(jobs);
for (cusips, 0..) |cusip, i| { for (cusips, 0..) |cusip, i| {
if (i > 0) try body_buf.append(allocator, ','); jobs[i] = .{ .idType = "ID_CUSIP", .idValue = cusip };
try body_buf.appendSlice(allocator, "{\"idType\":\"ID_CUSIP\",\"idValue\":\"");
try body_buf.appendSlice(allocator, cusip);
try body_buf.appendSlice(allocator, "\"}");
} }
try body_buf.append(allocator, ']');
// Serialize to JSON
const body = try std.fmt.allocPrint(allocator, "{f}", .{std.json.fmt(jobs, .{})});
defer allocator.free(body);
// Build headers // Build headers
var headers_buf: [2]std.http.Header = undefined; var headers_buf: [2]std.http.Header = undefined;
@ -84,7 +84,7 @@ pub fn lookupCusips(
var client = http.Client.init(allocator); var client = http.Client.init(allocator);
defer client.deinit(); defer client.deinit();
var response = try client.post(api_url, body_buf.items, headers_buf[0..n_headers]); var response = try client.post(api_url, body, headers_buf[0..n_headers]);
defer response.deinit(); defer response.deinit();
return parseResponse(allocator, response.body, cusips.len); return parseResponse(allocator, response.body, cusips.len);