summaryrefslogtreecommitdiff
path: root/http.zig
diff options
context:
space:
mode:
Diffstat (limited to 'http.zig')
-rw-r--r--http.zig35
1 files changed, 35 insertions, 0 deletions
diff --git a/http.zig b/http.zig
index 74a1341..3ca515f 100644
--- a/http.zig
+++ b/http.zig
@@ -6,6 +6,11 @@ const Request = std.http.Server.Request;
const MAX_BUF = 1024;
+const Endpoint = enum {
+ root_get,
+ login_get,
+};
+
pub fn main(init: std.process.Init) !void {
const io = init.io;
@@ -48,7 +53,37 @@ fn accept(stream: net.Stream, io: Io) !void {
}
}
+fn endpointFromRequest(request: *Request) !Endpoint {
+ const head = request.head;
+ if (head.method == .GET and std.mem.eql(u8, head.target, "/")) {
+ return .root_get;
+ } else if (head.method == .GET and std.mem.eql(u8, head.target, "/login")) {
+ return .login_get;
+ }
+ return error.InvalidEndpoint;
+}
+
fn serveHTTP(request: *Request) !void {
log.info("Received request: {s}", .{request.head.target});
+
+ const endpoint = endpointFromRequest(request) catch {
+ try respondNotFound(request);
+ return;
+ };
+ switch (endpoint) {
+ .root_get => try handleRoot(request),
+ .login_get => try handleLogin(request),
+ }
+}
+
+fn respondNotFound(request: *Request) !void {
+ try request.respond("", .{ .status = .not_found });
+}
+
+fn handleRoot(request: *Request) !void {
try request.respond("Welcome to Coinvane!\n", .{});
}
+
+fn handleLogin(request: *Request) !void {
+ try request.respond("Login page\n", .{});
+}