implement Handler; include "sys.m"; sys: Sys; sprint: import sys; include "bufio.m"; include "http.m"; http: Http; HConn, Req, Url: import http; headers: Headers; HeaderMap: import headers; init(m: Http, args: list of string) { sys = load Sys Sys->PATH; http = m; headers = http->headers; if(len args > 1) { sys->fprint(sys->fildes(2), "usage: %s\n", hd args); raise "fail:usage"; } } stripcr(s: string): string { t := ""; for(i := 0; i < len s; i++) { if(s[i] != '\r') t[len t] = s[i]; } return t; } handle(h: ref HConn) { r := h.req; h.rsp.hmap.add("Content-Type", "text/plain"); case r.method { "HEAD" => ; "GET" => h.puts(h.req.tostring(h.urlstr, 0)); h.puts((*h.req.url).tostring() + "\n"); h.puts("scheme: " + r.url.scheme + "\n"); h.puts("host: " + r.url.host + "\n"); h.puts("port: " + r.url.port + "\n"); h.puts("path: " + r.url.path + "\n"); h.puts("query: " + r.url.query + "\n"); h.puts("fragment: " + r.url.fragment + "\n"); * => h.err(405, nil); } }