/* WIP Under Construction */ package main import "log" import "fmt" //import "strings" import "os" var route_list []Route var route_groups []RouteGroup func main() { fmt.Println("Generating the router...") // Load all the routes... routes() var out string var fdata string = "// Code generated by. DO NOT EDIT.\n/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */\n" for _, route := range route_list { out += "\n\t\tcase \"" + route.Path + "\":\n\t\t\t" + route.Name+ "(w http.ResponseWriter, req *http.Request" for _, item := range route.Vars { out += ", " + item } out += ")" } fdata += `package main import "net/http" type GenRouter struct { UploadHandler http.Handler } func NewGenRouter() *GenRouter { fs_u := http.FileServer(http.Dir("./uploads")) return &GenRouter{http.StripPrefix("/uploads/",fs_u).ServeHTTP} } func (router *GenRouter) Handle(_ string, _ http.Handler) { } func (router *GenRouter) HandleFunc(_ string, _ func(http.ResponseWriter, *http.Request)) { } func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) { var extra_data string if req.URL.Path[len(req.URL.Path) - 1] != '/' { extra_data = req.URL.Path[strings.LastIndexByte(req.URL.Path,'/') + 1:] req.URL.Path = req.URL.Path[:strings.LastIndexByte(req.URL.Path,'/') + 1] } switch(req.URL.Path) {` + out + ` case "/uploads/": UploadHandler(w,req) default: NotFound(w,req) } } ` write_file("./gen_router.go",fdata) fmt.Println("Successfully generated the router") } func write_file(name string, content string) { f, err := os.Create(name) if err != nil { log.Fatal(err) } _, err = f.WriteString(content) if err != nil { log.Fatal(err) } f.Sync() f.Close() }