I am having trouble with my recursive function. Could someone help me out with this… thanks.
const std = @import("std");
fn get(a: []const u8, b: std.mem.Allocator, c: *std.ArrayList([]const u8)) !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);
var x = std.mem.splitSequence(u8, body, "er\":\"");
while (x.next()) |i| {
var h = std.mem.splitSequence(u8, i, "\"");
try c.append(h.next().?);
}
var d = std.mem.splitSequence(u8, body, "next_url\":\"");
var d_split: []const u8 = "";
var counter: u8 = 1;
while (d.next()) |f| {
if (counter == 2) {
d_split = f;
}
counter += 1;
}
if (counter > 0) {
var w = std.mem.splitSequence(u8, d_split, "\"");
try get(w.next().?, b, c);
}
}
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
var tickers = std.ArrayList([]const u8).init(allocator);
defer tickers.deinit();
try get("https://api.polygon.io/v3/reference/tickers?market=stocks&active=true&order=asc&limit=1000&sort=ticker&apiKey=MY_API_KEY", allocator, &tickers);
}
Compiler Error
error: InvalidFormat
C:\Users\first cash\zig-windows-x86_64-0.15.0-dev.369+1a2ceb36c\lib\std\Uri.zig:326:9: 0x7ff6b6d606db in parse (main.exe.obj)
return error.InvalidFormat;
^
C:\Users\first cash\Projects\rh\main.zig:4:17: 0x7ff6b6d5fb5e in get (main.exe.obj)
const uri = try std.Uri.parse(a);
^
C:\Users\first cash\Projects\rh\main.zig:36:9: 0x7ff6b6d605f9 in get (main.exe.obj)
try get(w.next().?, b, c);
^
C:\Users\first cash\Projects\rh\main.zig:36:9: 0x7ff6b6d605f9 in get (main.exe.obj)
try get(w.next().?, b, c);
^
C:\Users\first cash\Projects\rh\main.zig:46:5: 0x7ff6b6d654d3 in main (main.exe.obj)
try get("https://api.polygon.io/v3/reference/tickers?market=stocks&active=true&order=asc&limit=1000&sort=ticker&apiKey=6bhPQHYax6qkEBNwxj0rnmba3X6zi_C_", allocator, &tickers);
^