diff --git a/restapi/connections.go b/restapi/connections.go index 6a188b5..da4157e 100644 --- a/restapi/connections.go +++ b/restapi/connections.go @@ -16,10 +16,6 @@ import ( const defaultInterval = 1000 -func init() { - registerMountPoint("/connections", connectionRouter()) -} - func connectionRouter() http.Handler { r := chi.NewRouter() r.Get("/", getConnections) @@ -30,8 +26,7 @@ func connectionRouter() http.Handler { func getConnections(w http.ResponseWriter, r *http.Request) { if !websocket.IsWebSocketUpgrade(r) { - snapshot := statistic.DefaultManager.Snapshot() - render.JSON(w, r, snapshot) + render.JSON(w, r, statistic.DefaultManager.Snapshot()) return } @@ -56,8 +51,7 @@ func getConnections(w http.ResponseWriter, r *http.Request) { buf := &bytes.Buffer{} sendSnapshot := func() error { buf.Reset() - snapshot := statistic.DefaultManager.Snapshot() - if err := json.NewEncoder(buf).Encode(snapshot); err != nil { + if err := json.NewEncoder(buf).Encode(statistic.DefaultManager.Snapshot()); err != nil { return err } diff --git a/restapi/server.go b/restapi/server.go index 9bce4b7..a8e1180 100644 --- a/restapi/server.go +++ b/restapi/server.go @@ -20,18 +20,10 @@ import ( "github.com/gorilla/websocket" ) -var ( - _upgrader = websocket.Upgrader{ - CheckOrigin: func(r *http.Request) bool { - return true - }, - } - - _mountPoints = make(map[string]http.Handler) -) - -func registerMountPoint(pattern string, handler http.Handler) { - _mountPoints[pattern] = handler +var _upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, } func Start(addr, token string) error { @@ -51,10 +43,7 @@ func Start(addr, token string) error { r.Get("/logs", getLogs) r.Get("/traffic", traffic) r.Get("/version", version) - - for pattern, handler := range _mountPoints { - r.Mount(pattern, handler) - } + r.Mount("/connections", connectionRouter()) }) listener, err := net.Listen("tcp", addr) @@ -143,7 +132,7 @@ func getLogs(w http.ResponseWriter, r *http.Request) { continue } - if err := json.NewEncoder(buf).Encode(e); err != nil { + if err = json.NewEncoder(buf).Encode(e); err != nil { break } @@ -160,15 +149,12 @@ func getLogs(w http.ResponseWriter, r *http.Request) { } } -type Traffic struct { - Up int64 `json:"up"` - Down int64 `json:"down"` -} - func traffic(w http.ResponseWriter, r *http.Request) { - var wsConn *websocket.Conn + var ( + err error + wsConn *websocket.Conn + ) if websocket.IsWebSocketUpgrade(r) { - var err error wsConn, err = _upgrader.Upgrade(w, r, nil) if err != nil { return @@ -182,13 +168,16 @@ func traffic(w http.ResponseWriter, r *http.Request) { tick := time.NewTicker(time.Second) defer tick.Stop() - t := statistic.DefaultManager + buf := &bytes.Buffer{} - var err error for range tick.C { buf.Reset() - up, down := t.Now() - if err := json.NewEncoder(buf).Encode(Traffic{ + + up, down := statistic.DefaultManager.Now() + if err = json.NewEncoder(buf).Encode(struct { + Up int64 `json:"up"` + Down int64 `json:"down"` + }{ Up: up, Down: down, }); err != nil {