I am having trouble with coercion. I am trying to take a response and parse it.
Here is the code. Please help. Thanks.
const std = @import("std");
fn get(a: []const u8, b: std.mem.Allocator) !void {
const uri = try std.Uri.parse(a);
var client = std.http.Client{ .allocator = b };
defer client.deinit();
const server_header_buffer: []u8 = try b.alloc(u8, 1024 * 8);
defer b.free(server_header_buffer);
var req = try client.open(.GET, uri, .{
.server_header_buffer = server_header_buffer,
});
defer req.deinit();
try req.send();
try req.finish();
try req.wait();
// 1024 * 8 of memory.
const body = try req.reader().readAllAlloc(b, 229000 * 8);
defer b.free(body);
std.debug.print("{s}", .{body});
const x = std.mem.splitScalar(u8, body, "er\":\"");
for (x) |i| {
const h = std.mem.splitScalar(u8, i, "\"")[0];
std.debug.print("{s}", .{h});
}
}
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
try get("https://api.polygon.io/v3/reference/tickers?market=stocks&active=true&order=asc&limit=1000&sort=ticker&apiKey=MY_API_KEY", allocator);
}
Compiler error
test.zig:25:47: error: expected type '[]const []const u8', found '[]u8'
const x = std.mem.splitScalar([]const u8, body, "er\":\"");
^~~~
test.zig:25:47: note: pointer type child 'u8' cannot cast into pointer type child '[]const u8'
C:\Users\first cash\zig-windows-x86_64-0.15.0-dev.369+1a2ceb36c\lib\std\mem.zig:2481:46: note: parameter type declared here
pub fn splitScalar(comptime T: type, buffer: []const T, delimiter: T) SplitIterator(T, .scalar) {
^~~~~~~~~
referenced by:
main: test.zig:35:12
WinStartup: C:\Users\first cash\zig-windows-x86_64-0.15.0-dev.369+1a2ceb36c\lib\std\start.zig:671:37
3 reference(s) hidden; use '-freference-trace=5' to see all references
Thanks again.