From 694b811a19d2c3496effeabd1db7cc7ade27c99d Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Wed, 19 Jan 2022 11:36:53 -0800 Subject: [PATCH] logging cleanup --- net/server/internal/api_setProfile.go | 16 +++++----- net/server/internal/api_status.go | 42 +++++++++++++------------ net/server/internal/logger.go | 14 +++++++++ net/server/internal/status_test.go | 21 +++++++++++++ net/server/internal/ucAttachApp_test.go | 16 ++-------- 5 files changed, 66 insertions(+), 43 deletions(-) create mode 100644 net/server/internal/status_test.go diff --git a/net/server/internal/api_setProfile.go b/net/server/internal/api_setProfile.go index a535f5fe..ce319bcc 100644 --- a/net/server/internal/api_setProfile.go +++ b/net/server/internal/api_setProfile.go @@ -8,22 +8,22 @@ import ( func SetProfile(w http.ResponseWriter, r *http.Request) { - account, res := BearerAppToken(r, true); - if res != nil { - w.WriteHeader(http.StatusUnauthorized) + account, err := BearerAppToken(r, true); + if err != nil { + ErrResponse(w, http.StatusUnauthorized, err) return } if account.Disabled { - w.WriteHeader(http.StatusGone); + ErrResponse(w, http.StatusGone, nil) return } detail := account.AccountDetail // extract profile data from body var profileData ProfileData; - err := ParseRequest(r, w, &profileData) + err = ParseRequest(r, w, &profileData) if err != nil { - w.WriteHeader(http.StatusBadRequest) + ErrResponse(w, http.StatusBadRequest, err) return } @@ -42,9 +42,7 @@ func SetProfile(w http.ResponseWriter, r *http.Request) { return nil }) if err != nil { - PrintMsg(err) - LogMsg("failed to store profile") - w.WriteHeader(http.StatusInternalServerError) + ErrResponse(w, http.StatusInternalServerError, err) return } diff --git a/net/server/internal/api_status.go b/net/server/internal/api_status.go index d0832880..e8fd6f41 100644 --- a/net/server/internal/api_status.go +++ b/net/server/internal/api_status.go @@ -1,7 +1,7 @@ package databag import ( - "log" + "errors" "sync" "net/http" "encoding/json" @@ -30,27 +30,31 @@ func Status(w http.ResponseWriter, r *http.Request) { // accept websocket connection conn, err := upgrader.Upgrade(w, r, nil) if err != nil { - log.Println("Status: failed upgrade connection") - return + ErrMsg(err) + return } defer conn.Close() // receive announce - t, m, err := conn.ReadMessage() - if t != websocket.TextMessage || err != nil { - LogMsg("failed to receive announce") + t, m, res := conn.ReadMessage() + if res != nil { + ErrMsg(res) + return + } + if t != websocket.TextMessage { + ErrMsg(errors.New("invalid websocket message type")) return } - var announce Announce - if json.Unmarshal(m, &announce) != nil { - LogMsg("invalid announce") + var a Announce + if err := json.Unmarshal(m, &a); err != nil { + ErrMsg(err) return } // retrieve reference account var app store.App - if store.DB.Preload("Account").Where("token = ?", announce.AppToken).First(&app).Error != nil { - LogMsg("invalid app token") + if err := store.DB.Preload("Account").Where("token = ?", a.AppToken).First(&app).Error; err != nil { + ErrMsg(err) return } @@ -59,12 +63,11 @@ func Status(w http.ResponseWriter, r *http.Request) { var msg []byte msg, err = json.Marshal(rev) if err != nil { - log.Println("Status - failed to marshal revision") + ErrMsg(err) return } - err = conn.WriteMessage(websocket.TextMessage, msg) - if err != nil { - log.Println("Status - failed to send initial revision") + if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil { + ErrMsg(err) return } @@ -80,13 +83,12 @@ func Status(w http.ResponseWriter, r *http.Request) { for { select { case msg := <-c: - err = conn.WriteMessage(websocket.TextMessage, msg) - if err != nil { - log.Println("Status - failed to send revision, closing") + if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil { + ErrMsg(err) return } case <-wsExit: - log.Println("Status - server exit") + LogMsg("exiting server") wsExit<-true return } @@ -115,7 +117,7 @@ func SetStatus(account store.Account) { rev := getRevision(account); msg, err := json.Marshal(rev) if err != nil { - log.Println("SetStatus - failed to marshal revision") + ErrMsg(err) return } diff --git a/net/server/internal/logger.go b/net/server/internal/logger.go index 5a1ff007..f7bbffb5 100644 --- a/net/server/internal/logger.go +++ b/net/server/internal/logger.go @@ -37,6 +37,20 @@ func Logger(inner http.Handler, name string) http.Handler { }) } +func ErrResponse(w http.ResponseWriter, code int, err error) { + ErrMsg(err) + w.WriteHeader(code) +} + +func ErrMsg(err error) { + if !hideLog && err != nil { + _, file, line, _ := runtime.Caller(1) + p, _ := os.Getwd() + log.Printf("%s:%d %s", strings.TrimPrefix(file, p), line, err.Error()) + pretty.Println(err) + } +} + func LogMsg(msg string) { if !hideLog { _, file, line, _ := runtime.Caller(1) diff --git a/net/server/internal/status_test.go b/net/server/internal/status_test.go new file mode 100644 index 00000000..3974fcc0 --- /dev/null +++ b/net/server/internal/status_test.go @@ -0,0 +1,21 @@ +package databag + +import ( + "net/url" + "net/http" + "net/http/httptest" +) + +type StatusHandler struct {} + +func (h *StatusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + Status(w, r) +} + +func StartTestWebsocketServer() string { + h := StatusHandler{} + s := httptest.NewServer(&h) + wsUrl, _ := url.Parse(s.URL) + wsUrl.Scheme = "ws" + return wsUrl.String() +} diff --git a/net/server/internal/ucAttachApp_test.go b/net/server/internal/ucAttachApp_test.go index a2116117..985c0672 100644 --- a/net/server/internal/ucAttachApp_test.go +++ b/net/server/internal/ucAttachApp_test.go @@ -9,26 +9,14 @@ import ( "crypto/rsa" "crypto" "time" - "net/url" - "net/http" - "net/http/httptest" "github.com/stretchr/testify/assert" "github.com/gorilla/websocket" ) -type StatusHandler struct {} - -func (h *StatusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - Status(w, r) -} - func TestAttachAccount(t *testing.T) { // setup websocket server - h := StatusHandler{} - s := httptest.NewServer(&h) - wsUrl, _ := url.Parse(s.URL) - wsUrl.Scheme = "ws" + wsUrl := StartTestWebsocketServer() // get account token r, w, _ := NewRequest("POST", "/admin/accounts", nil) @@ -96,7 +84,7 @@ func TestAttachAccount(t *testing.T) { assert.Less(t, cur - 60, auth.Timestamp) // app connects websocket - ws, _, _ := websocket.DefaultDialer.Dial(wsUrl.String(), nil) + ws, _, _ := websocket.DefaultDialer.Dial(wsUrl, nil) announce := Announce{ AppToken: access } msg, _ := json.Marshal(&announce) ws.WriteMessage(websocket.TextMessage, msg)