From d033325a449f752588ed459dba57da6742f79676 Mon Sep 17 00:00:00 2001 From: zachir Date: Tue, 26 Mar 2024 00:50:22 -0500 Subject: Expand all modules to std.* This is for greater clarity as to what everything is. --- src/main.zig | 56 +++++++++++++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 33 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index b3c1b55..e611aac 100644 --- a/src/main.zig +++ b/src/main.zig @@ -19,38 +19,27 @@ // Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. const std = @import("std"); +const log = std.log.scoped(.server); /// zhttpd relies on mime in addition to std, which is included as made by /// andrewrk at https://github.com/andrewrk/mime.git const mime = @import("mime/mime.zig"); -const Address = std.net.Address; -const ArrayList = std.ArrayList; -const debug = std.debug; -const fmt = std.fmt; -const heap = std.heap; -const http = std.http; -const fs = std.fs; -const log = std.log.scoped(.server); -const mem = std.mem; -const bufferedReader = std.io.bufferedReader; -const getcwd = std.os.getcwd; - /// The server has a hardcoded address and port of 127.0.0.1:8080 /// The path requested for a file has the limit of fs.MAX_PATH_BYTES, which is /// the maxmimum length for a file path in the OS /// The maximum file size is 1 << 21, aka (1 * 2^20), which is 2 MB. const server_addr = "127.0.0.1"; const server_port = 8080; -const max_path_bytes = fs.MAX_PATH_BYTES; +const max_path_bytes = std.fs.MAX_PATH_BYTES; const buffer_limit = 1 << 21; /// readFiles() reads the file to a provided buffer, and returns the number of /// bytes read. -/// readFiles() can fail from fmt.allocPrint(), fs.cwd().openFile(), +/// readFiles() can fail from std.fmt.allocPrint(), std.fs.cwd().openFile(), /// file.stat(), and file.readAll() -/// fmt.allocPrint() will return an AllocPrintError -/// fs.cwd().openFile() will return a File.OpenError +/// std.fmt.allocPrint() will return an AllocPrintError +/// std.fs.cwd().openFile() will return a File.OpenError /// file.stat() will return a StatError /// file.readAll() will return a ReadError fn readFiles(target: []const u8, buffer: []u8) !usize { @@ -62,19 +51,20 @@ fn readFiles(target: []const u8, buffer: []u8) !usize { var file_path = try allocator.alloc(u8, max_path_bytes); defer allocator.free(file_path); var cwd_buffer = [_]u8{0} ** max_path_bytes; - const cwd = try getcwd(&cwd_buffer); - file_path = try fmt.allocPrint(allocator, "{s}{s}", .{ cwd, target }); + const cwd = try std.os.getcwd(&cwd_buffer); + file_path = try std.fmt.allocPrint(allocator, "{s}{s}", .{ cwd, target }); + log.info("Loading file {s}...", .{file_path}); // Determine if the requested file exists - const file = try fs.cwd().openFile(file_path, .{}); + const file = try std.fs.cwd().openFile(file_path, .{}); defer file.close(); var stat = try file.stat(); switch (stat.kind) { .directory => { - if (mem.endsWith(u8, target, "/")) { - file_path = try fmt.allocPrint(allocator, "{s}index.html", .{target}); + if (std.mem.endsWith(u8, target, "/")) { + file_path = try std.fmt.allocPrint(allocator, "{s}index.html", .{target}); } else { - file_path = try fmt.allocPrint(allocator, "{s}/index.html", .{target}); + file_path = try std.fmt.allocPrint(allocator, "{s}/index.html", .{target}); } return readFiles(file_path, buffer); }, @@ -102,7 +92,7 @@ fn readFiles(target: []const u8, buffer: []u8) !usize { /// - 404 Not Found /// - 413 Payload Too Large /// - 414 URI Too Long -fn handleRequest(response: *http.Server.Response) !void { +fn handleRequest(response: *std.http.Server.Response) !void { // Log the request details log.info("{s} {s} {s}", .{ @tagName(response.request.method), @tagName(response.request.version), response.request.target }); @@ -147,7 +137,7 @@ fn handleRequest(response: *http.Server.Response) !void { // a '.' indicates a file extension var i: usize = response.request.target.len; var mime_type: ?mime.Type = undefined; - if (mem.endsWith(u8, response.request.target, "/")) { + if (std.mem.endsWith(u8, response.request.target, "/")) { log.warn("Dir requested, returning index.html!", .{}); try response.headers.append("content-type", "text/html"); } else { @@ -168,7 +158,7 @@ fn handleRequest(response: *http.Server.Response) !void { } if (i <= 0) { log.warn("No extension detected!", .{}); - if (mem.indexOf(u8, &read, "