From db4ed0d8110c25ba02d06a29087d9695522f4fce Mon Sep 17 00:00:00 2001 From: Antoni Sawicki Date: Mon, 8 Jul 2024 21:36:32 -0700 Subject: [PATCH] code reorg, comments etc --- cdp.go | 11 +++++------ txt.go | 6 ++++-- util.go | 2 +- wrp.go | 22 ++++++++-------------- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/cdp.go b/cdp.go index a698d72..69cd053 100644 --- a/cdp.go +++ b/cdp.go @@ -1,3 +1,4 @@ +// WRP ISMAP / ChromeDP routines package main import ( @@ -111,7 +112,7 @@ func ctxErr(err error, w io.Writer) { // https://github.com/chromedp/chromedp/issues/979 func chromedpCaptureScreenshot(res *[]byte, h int64) chromedp.Action { if res == nil { - panic("res cannot be nil") + panic("res cannot be nil") // TODO: do not panic here, return error } if h == 0 { return chromedp.CaptureScreenshot(res) @@ -223,7 +224,7 @@ func (rq *wrpReq) captureScreenshot() { iH = i.Bounds().Max.Y log.Printf("%s Encoded JPG image: %s, Size: %s, Quality: %d, Res: %dx%d, Time: %vms\n", rq.r.RemoteAddr, imgPath, sSize, *jpgQual, iW, iH, time.Since(st).Milliseconds()) } - rq.printHTML(printParams{ + rq.printUI(uiParams{ bgColor: fmt.Sprintf("#%02X%02X%02X", r, g, b), pageHeight: fmt.Sprintf("%d PX", h), imgSize: sSize, @@ -235,7 +236,6 @@ func (rq *wrpReq) captureScreenshot() { log.Printf("%s Done with capture for %s\n", rq.r.RemoteAddr, rq.url) } -// Process HTTP requests to ISMAP '/map/' url func mapServer(w http.ResponseWriter, r *http.Request) { log.Printf("%s ISMAP Request for %s [%+v]\n", r.RemoteAddr, r.URL.Path, r.URL.RawQuery) rq, ok := ismap[r.URL.Path] @@ -257,16 +257,15 @@ func mapServer(w http.ResponseWriter, r *http.Request) { } log.Printf("%s WrpReq from ISMAP: %+v\n", r.RemoteAddr, rq) if len(rq.url) < 4 { - rq.printHTML(printParams{bgColor: "#FFFFFF"}) + rq.printUI(uiParams{bgColor: "#FFFFFF"}) return } rq.navigate() // TODO: if error from navigate do not capture rq.captureScreenshot() } -// Process HTTP requests for images '/img/' url // TODO: merge this with html mode IMGZ -func imgServer(w http.ResponseWriter, r *http.Request) { +func imgServerMap(w http.ResponseWriter, r *http.Request) { log.Printf("%s IMG Request for %s\n", r.RemoteAddr, r.URL.Path) imgBuf, ok := img[r.URL.Path] if !ok || imgBuf.Bytes() == nil { diff --git a/txt.go b/txt.go index d1f4df6..bef7742 100644 --- a/txt.go +++ b/txt.go @@ -1,8 +1,10 @@ +// WRP TXT / Simple HTML Mode Routines package main // TODO: // - image type based on form value // - also size and quality +// - imgOpt image quality // - non overlaping image names atomic.int etc // - garbage collector / delete old images from map // - add referer header @@ -210,13 +212,13 @@ func (rq *wrpReq) captureMarkdown() { return } log.Printf("Rendered %v bytes html for %v", len(ht.String()), rq.url) - rq.printHTML(printParams{ + rq.printUI(uiParams{ text: string(asciify([]byte(ht.String()))), bgColor: "#FFFFFF", }) } -func imgServerZ(w http.ResponseWriter, r *http.Request) { +func imgServerTxt(w http.ResponseWriter, r *http.Request) { log.Printf("%s IMGZ Request for %s", r.RemoteAddr, r.URL.Path) id := strings.Replace(r.URL.Path, imgZpfx, "", 1) img, err := imgStor.get(id) diff --git a/util.go b/util.go index c746e18..83d8b3c 100644 --- a/util.go +++ b/util.go @@ -12,7 +12,7 @@ import ( "github.com/soniakeys/quant/median" ) -func printIPs(b string) { +func printMyIPs(b string) { ap := strings.Split(b, ":") if len(ap) < 1 { log.Fatal("Wrong format of ipaddress:port") diff --git a/wrp.go b/wrp.go index 1005476..9823702 100644 --- a/wrp.go +++ b/wrp.go @@ -87,7 +87,7 @@ type uiData struct { } // Parameters for HTML print function -type printParams struct { +type uiParams struct { bgColor string pageHeight string imgSize string @@ -117,7 +117,6 @@ type wrpReq struct { r *http.Request } -// Parse HTML Form, Process Input Boxes, Etc. func (rq *wrpReq) parseForm() { rq.r.ParseForm() rq.wrpMode = rq.r.FormValue("m") @@ -163,8 +162,7 @@ func (rq *wrpReq) parseForm() { log.Printf("%s WrpReq from UI Form: %+v\n", rq.r.RemoteAddr, rq) } -// Display WP UI -func (rq *wrpReq) printHTML(p printParams) { +func (rq *wrpReq) printUI(p uiParams) { rq.w.Header().Set("Cache-Control", "max-age=0") rq.w.Header().Set("Expires", "-1") rq.w.Header().Set("Pragma", "no-cache") @@ -197,7 +195,6 @@ func (rq *wrpReq) printHTML(p printParams) { } } -// Process HTTP requests to WRP '/' url func pageServer(w http.ResponseWriter, r *http.Request) { log.Printf("%s Page Request for %s [%+v]\n", r.RemoteAddr, r.URL.Path, r.URL.RawQuery) rq := wrpReq{ @@ -206,7 +203,7 @@ func pageServer(w http.ResponseWriter, r *http.Request) { } rq.parseForm() if len(rq.url) < 4 { - rq.printHTML(printParams{bgColor: "#FFFFFF"}) + rq.printUI(uiParams{bgColor: "#FFFFFF"}) return } rq.navigate() // TODO: if error from navigate do not capture @@ -217,7 +214,6 @@ func pageServer(w http.ResponseWriter, r *http.Request) { rq.captureScreenshot() } -// Process HTTP requests for Shutdown via '/shutdown/' url func haltServer(w http.ResponseWriter, r *http.Request) { log.Printf("%s Shutdown Request for %s\n", r.RemoteAddr, r.URL.Path) w.Header().Set("Content-Type", "text/plain") @@ -230,8 +226,7 @@ func haltServer(w http.ResponseWriter, r *http.Request) { os.Exit(1) } -// returns html template, either from html file or built-in -func tmpl(t string) string { +func wrpTemplate(t string) string { var tmpl []byte fh, err := os.Open(t) if err != nil { @@ -261,7 +256,6 @@ builtin: return string(tmpl) } -// Main func main() { var err error log.SetFlags(log.LstdFlags | log.Lshortfile) @@ -271,7 +265,7 @@ func main() { if len(os.Getenv("PORT")) > 0 { *addr = ":" + os.Getenv(("PORT")) } - printIPs(*addr) + printMyIPs(*addr) n, err := fmt.Sscanf(*fgeom, "%dx%dx%d", &defGeom.w, &defGeom.h, &defGeom.c) if err != nil || n != 3 { log.Fatalf("Unable to parse -g geometry flag / %s", err) @@ -294,14 +288,14 @@ func main() { http.HandleFunc("/", pageServer) http.HandleFunc("/map/", mapServer) - http.HandleFunc("/img/", imgServer) - http.HandleFunc(imgZpfx, imgServerZ) + http.HandleFunc("/img/", imgServerMap) + http.HandleFunc(imgZpfx, imgServerTxt) http.HandleFunc("/shutdown/", haltServer) http.HandleFunc("/favicon.ico", http.NotFound) log.Printf("Default Img Type: %v, Geometry: %+v", *defType, defGeom) - htmlTmpl, err = template.New("wrp.html").Parse(tmpl(*htmFnam)) + htmlTmpl, err = template.New("wrp.html").Parse(wrpTemplate(*htmFnam)) if err != nil { log.Fatal(err) }