authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-04-29 22:33:29 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-04-29 22:33:29 -07:00
log796fca3d255da3c835a9133d180d341c661e6cdb
tree8edb917540a2ca9adc47aef95a3127bedd2cb370
parente02a50af83dab38ee4df026397f0c04109c8452c

add example program


2 files changed, 56 insertions(+), 0 deletions(-)

build.zig created+23
......@@ -0,0 +1,23 @@
1const std = @import("std");
2const deps = @import("./deps.zig");
3
4pub fn build(b: *std.build.Builder) void {
5 const target = b.standardTargetOptions(.{});
6
7 const mode = b.standardReleaseOptions();
8
9 const exe = b.addExecutable("zig-json", "src/main.zig");
10 exe.setTarget(target);
11 exe.setBuildMode(mode);
12 deps.addAllTo(exe);
13 exe.install();
14
15 const run_cmd = exe.run();
16 run_cmd.step.dependOn(b.getInstallStep());
17 if (b.args) |args| {
18 run_cmd.addArgs(args);
19 }
20
21 const run_step = b.step("run", "Run the app");
22 run_step.dependOn(&run_cmd.step);
23}
src/main.zig created+33
......@@ -0,0 +1,33 @@
1const std = @import("std");
2
3const json = @import("json");
4const zfetch = @import("zfetch");
5
6pub fn main() !void {
7 var gpa = std.heap.GeneralPurposeAllocator(.{}){};
8 const alloc = &gpa.allocator;
9
10 const url = "https://old.reddit.com/r/Zig/.json";
11
12 const req = try zfetch.Request.init(alloc, url, null);
13 defer req.deinit();
14
15 try req.do(.GET, null, null);
16 const r = req.reader();
17
18 const body_content = try r.readAllAlloc(alloc, std.math.maxInt(usize));
19 const val = try json.parse(alloc, body_content);
20
21 std.log.info("hot posts from r/Zig", .{});
22 std.log.info("", .{});
23
24 var count: usize = 1;
25 for (val.fetch(.{ "data", "children" }).?.Array) |ch| {
26 const post = ch.get("data").?;
27 const title = post.get("title").?.String;
28 const author = post.get("author").?.String;
29 std.log.info("{}: {s} -- u/{s} ", .{ count, title, author });
30 count += 1;
31 }
32 _ = std.math.lossyCast(i32, 2.4);
33}