2022-06-09 06:37:09 +00:00
|
|
|
const std = @import("std");
|
|
|
|
const ciutf8 = @import("util").ciutf8;
|
|
|
|
|
2022-06-26 07:00:14 +00:00
|
|
|
const conn = @import("./conn.zig");
|
|
|
|
const response_stream = @import("./response_stream.zig");
|
2022-06-21 06:04:39 +00:00
|
|
|
const routing = @import("./routing.zig");
|
2022-06-23 07:25:50 +00:00
|
|
|
const server = @import("./server.zig");
|
2022-06-21 06:04:39 +00:00
|
|
|
|
2022-06-26 07:00:14 +00:00
|
|
|
pub const Connection = conn.Connection;
|
2022-06-09 06:37:09 +00:00
|
|
|
pub const Method = std.http.Method;
|
2022-06-21 06:04:39 +00:00
|
|
|
pub const ResponseStream = response_stream.ResponseStream;
|
|
|
|
//pub const Router = routing.Router(Context);
|
2022-06-26 07:00:14 +00:00
|
|
|
pub const Status = std.http.Status;
|
2022-06-09 06:37:09 +00:00
|
|
|
|
|
|
|
pub const Headers = std.HashMap([]const u8, []const u8, struct {
|
|
|
|
pub fn eql(_: @This(), a: []const u8, b: []const u8) bool {
|
|
|
|
return ciutf8.eql(a, b);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn hash(_: @This(), str: []const u8) u64 {
|
|
|
|
return ciutf8.hash(str);
|
|
|
|
}
|
|
|
|
}, std.hash_map.default_max_load_percentage);
|
|
|
|
|
2022-06-23 07:25:50 +00:00
|
|
|
pub const Request = struct {
|
|
|
|
method: Method,
|
|
|
|
path: []const u8,
|
|
|
|
headers: Headers,
|
|
|
|
body: ?[]const u8 = null,
|
|
|
|
};
|
|
|
|
|
2022-07-09 19:39:36 +00:00
|
|
|
pub const Context = struct {
|
|
|
|
arena_alloc: std.mem.Allocator,
|
|
|
|
request: *const Request,
|
|
|
|
connection: *const Connection,
|
|
|
|
|
|
|
|
const Writer = ResponseStream(Connection.Writer);
|
|
|
|
|
|
|
|
pub fn openResponse(self: *Context, headers: *const Headers, status: Status) !Writer {
|
|
|
|
return try response_stream.open(self.arena_alloc, self.connection.stream.writer(), headers, status);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-06-09 06:37:09 +00:00
|
|
|
test {
|
2022-06-26 07:00:14 +00:00
|
|
|
_ = conn;
|
|
|
|
_ = response_stream;
|
2022-06-21 06:04:39 +00:00
|
|
|
_ = routing;
|
2022-06-23 07:25:50 +00:00
|
|
|
_ = server;
|
2022-06-09 06:37:09 +00:00
|
|
|
}
|