From 283c31564a9d5dab4b8b71d7498886b0cd20a999 Mon Sep 17 00:00:00 2001 From: Jan Wolff Date: Fri, 12 Sep 2025 09:34:01 +0200 Subject: initial commit --- main.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..3800de3 --- /dev/null +++ b/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "flag" + "fmt" + "log" + "net/http" + "runtime/debug" + + "drop.janw.name/controller" +) + +var CONFIG_FILENAME string + +func registerHandler(pattern string, controller controller.Controller) { + http.HandleFunc(pattern, func(res http.ResponseWriter, req *http.Request) { + defer func() { + err := recover() + if err != nil { + res.WriteHeader(http.StatusInternalServerError) + fmt.Fprintln(res, "internal server error") + fmt.Fprintln(res, err) + fmt.Fprintln(res, string(debug.Stack())) + } + }() + + var methodFunc http.HandlerFunc + + switch req.Method { + case http.MethodGet: + methodFunc = controller.GET + case http.MethodPost: + methodFunc = controller.POST + } + + log.Println(req.Method, req.RemoteAddr, req.RequestURI) + + if methodFunc != nil { + methodFunc(res, req) + } else { + res.WriteHeader(http.StatusMethodNotAllowed) + fmt.Fprintln(res, "method not allowed") + } + }) +} + +func init() { + flag.StringVar(&CONFIG_FILENAME, "c", "config_example.json", "path to the configuration file") + flag.Parse() +} + +func main() { + app := controller.NewApp(CONFIG_FILENAME) + + registerHandler("/", controller.Controller{ + GET: app.Index, + POST: app.FilePost, + }) + + registerHandler("/{file}", controller.Controller{ + GET: app.FileGet, + }) + + log.Println(fmt.Sprintf("serving on http://%s\n", "127.0.0.1:8080")) + log.Panicln(http.ListenAndServe("127.0.0.1:8080", nil)) +} -- cgit v1.2.3