Mercurial > gemma
diff pkg/controllers/geostyling.go @ 870:29c11f4bf9db geo-style
Started with endpoint to upload geo style.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sat, 29 Sep 2018 23:33:14 +0200 |
parents | |
children | f0b6852c14d1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg/controllers/geostyling.go Sat Sep 29 23:33:14 2018 +0200 @@ -0,0 +1,42 @@ +package controllers + +import ( + "bytes" + "io" + "log" + "net/http" +) + +const ( + maxStyleSize = 5 * 1024 * 1024 + styleName = "style" +) + +func extractStyle(req *http.Request) ([]byte, error) { + + f, _, err := req.FormFile(styleName) + if err != nil { + return nil, err + } + defer f.Close() + + var buf bytes.Buffer + + if _, err := io.Copy(&buf, io.LimitReader(f, maxStyleSize)); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func uploadStyle(rw http.ResponseWriter, req *http.Request) { + + data, err := extractStyle(req) + if err != nil { + log.Printf("error: %v\n", err) + http.Error(rw, "error: "+err.Error(), http.StatusBadRequest) + return + } + + log.Printf("uploaded file length: %d\n", len(data)) + // TODO: Implement me! +}