fediglam/src/main/controllers/api/streaming.zig

37 lines
1.1 KiB
Zig
Raw Normal View History

2022-10-16 12:48:12 +00:00
const http = @import("http");
const std = @import("std");
pub const streaming = struct {
pub const method = .GET;
2022-11-27 01:52:30 +00:00
pub const path = "/streaming";
2022-10-16 12:48:12 +00:00
pub fn handler(req: anytype, response: anytype, _: anytype) !void {
var iter = req.headers.iterator();
std.log.debug("--Headers--", .{});
while (iter.next()) |pair| {
std.log.debug("{s}: {s}", .{ pair.key_ptr.*, pair.value_ptr.* });
}
const res = response.hijack();
var socket = try http.socket.handshake(req.allocator, req.base_request, res);
while (true) {
var message = try socket.accept();
defer message.close();
std.log.debug("Message received", .{});
const reader = message.reader();
const msg = try reader.readAllAlloc(req.allocator, 1 << 63);
defer req.allocator.free(msg);
var response_msg = try socket.openMessage(.text, req.allocator, .{});
defer response_msg.close();
try response_msg.writer().writeAll(msg);
try response_msg.finish();
std.log.debug("{s}", .{msg});
}
}
};