12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package main
- import (
- "demos/cmd/demo1/assets"
- "demos/ops/decodeops"
- "demos/ops/defaultops"
- "demos/ops/devops"
- "demos/ops/genericops"
- "demos/ops/ml"
- "demos/ops/stringops"
- "demos/ops/webops"
- "log"
- "mime"
- "net/http"
- "path/filepath"
- "strings"
- "github.com/gohxs/prettylog"
- "github.com/gohxs/webu"
- "github.com/gohxs/webu/chain"
- "github.com/hexasoftware/flow/flowserver"
- )
- //go:generate go get github.com/gohxs/folder2go
- //go:generate folder2go -handler -nobackup static assets assets
- func main() {
- prettylog.Global()
- log.Println("Running version:", flowserver.Version)
- addr := ":2015"
- log.Println("Starting server at:", addr)
- c := chain.New(webu.ChainLogger(prettylog.New("req")))
- mux := http.NewServeMux()
- mux.HandleFunc("/", assetFunc)
- defops := defaultops.New()
- defops.Merge(genericops.New())
- defops.Merge(stringops.New())
- mux.Handle("/default/", c.Build(
- http.StripPrefix("/default", flowserver.New(defops, "default")),
- ))
- mlReg := ml.New()
- mlReg.Merge(genericops.New())
- mlReg.Merge(stringops.New())
- mlReg.Merge(webops.New())
- mlReg.Merge(decodeops.New())
- mux.Handle("/machinelearning/", c.Build(
- http.StripPrefix("/machinelearning", flowserver.New(mlReg, "ml")),
- ))
- mux.Handle("/devops/", c.Build(
- http.StripPrefix("/devops", flowserver.New(devops.New(), "devops")),
- ))
- // Serve UI here
- // Context registry
- http.ListenAndServe(addr, mux)
- }
- func assetFunc(w http.ResponseWriter, r *http.Request) {
- urlPath := ""
- // func that handles mux
- server := r.Context().Value(http.ServerContextKey).(*http.Server)
- mux, ok := server.Handler.(*http.ServeMux)
- if ok {
- _, handlerPath := mux.Handler(r)
- urlPath = strings.TrimPrefix(r.URL.String(), handlerPath)
- }
- if urlPath == "" { // Auto index
- urlPath = "index.html"
- }
- data, ok := assets.Data[urlPath]
- if !ok {
- http.Redirect(w, r, "/default", 302)
- //w.WriteHeader(404)
- }
- w.Header().Set("Content-type", mime.TypeByExtension(filepath.Ext(urlPath)))
- w.Write(data)
- }
|