1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 09:37:02 +00:00

rest: resolve linter errors (#430)

This commit is contained in:
James Hillyerd
2023-11-12 19:32:43 -08:00
committed by GitHub
parent 86d762ac88
commit 7ae7d29741
6 changed files with 42 additions and 54 deletions

View File

@@ -15,21 +15,6 @@ import (
"github.com/jhillyerd/enmime"
)
const (
// JSON map keys
mailboxKey = "mailbox"
idKey = "id"
fromKey = "from"
toKey = "to"
subjectKey = "subject"
dateKey = "date"
sizeKey = "size"
headerKey = "header"
bodyKey = "body"
textKey = "text"
htmlKey = "html"
)
func TestRestMailboxList(t *testing.T) {
// Setup
mm := test.NewManager()

View File

@@ -1,12 +1,13 @@
package client_test
import (
"github.com/gorilla/mux"
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/gorilla/mux"
"github.com/inbucket/inbucket/v3/pkg/rest/client"
)
@@ -357,5 +358,5 @@ type jsonHandler struct {
func (j *jsonHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
j.called = true
w.Write([]byte(j.json))
_, _ = w.Write([]byte(j.json))
}

View File

@@ -62,7 +62,7 @@ func exampleSetup() (baseURL string, teardown func()) {
// Handle ListMailbox request.
router.HandleFunc("/api/v1/mailbox/user1", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`[
_, _ = w.Write([]byte(`[
{
"mailbox": "user1",
"id": "20180107T224128-0000",
@@ -79,7 +79,7 @@ func exampleSetup() (baseURL string, teardown func()) {
// Handle GetMessage request.
router.HandleFunc("/api/v1/mailbox/user1/20180107T224128-0000",
func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{
_, _ = w.Write([]byte(`{
"mailbox": "user1",
"id": "20180107T224128-0000",
"from": "admin@inbucket.org",

View File

@@ -58,24 +58,3 @@ func (c *restClient) doJSON(method string, uri string, v interface{}) error {
return fmt.Errorf("%s for %q, unexpected %v: %s", method, uri, resp.StatusCode, resp.Status)
}
// doJSONBody performs an HTTP request with this client and marshalls the JSON response into v.
func (c *restClient) doJSONBody(method string, uri string, body []byte, v interface{}) error {
resp, err := c.do(method, uri, body)
if err != nil {
return err
}
defer func() {
_ = resp.Body.Close()
}()
if resp.StatusCode == http.StatusOK {
if v == nil {
return nil
}
// Decode response body
return json.NewDecoder(resp.Body).Decode(v)
}
return fmt.Errorf("%s for %q, unexpected %v: %s", method, uri, resp.StatusCode, resp.Status)
}

View File

@@ -72,12 +72,18 @@ func (ml *msgListenerV1) Delete(mailbox string, id string) error {
func (ml *msgListenerV1) WSReader(conn *websocket.Conn) {
slog := log.With().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Logger()
defer ml.Close()
conn.SetReadLimit(maxMessageSizeV1)
conn.SetReadDeadline(time.Now().Add(pongWaitV1))
if err := conn.SetReadDeadline(time.Now().Add(pongWaitV1)); err != nil {
slog.Warn().Err(err).Msg("Failed to setup read deadline")
}
conn.SetPongHandler(func(string) error {
slog.Debug().Msg("Got pong")
conn.SetReadDeadline(time.Now().Add(pongWaitV1))
if err := conn.SetReadDeadline(time.Now().Add(pongWaitV1)); err != nil {
slog.Warn().Err(err).Msg("Failed to set read deadline in pong")
}
return nil
})
@@ -101,6 +107,9 @@ func (ml *msgListenerV1) WSReader(conn *websocket.Conn) {
// WSWriter makes sure the websocket client is still connected
func (ml *msgListenerV1) WSWriter(conn *websocket.Conn) {
slog := log.With().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Logger()
ticker := time.NewTicker(pingPeriodV1)
defer func() {
ticker.Stop()
@@ -111,10 +120,12 @@ func (ml *msgListenerV1) WSWriter(conn *websocket.Conn) {
for {
select {
case msg, ok := <-ml.c:
conn.SetWriteDeadline(time.Now().Add(writeWaitV1))
if err := conn.SetWriteDeadline(time.Now().Add(writeWaitV1)); err != nil {
slog.Warn().Err(err).Msg("Failed to set write deadline for msg")
}
if !ok {
// msgListener closed, exit
conn.WriteMessage(websocket.CloseMessage, []byte{})
_ = conn.WriteMessage(websocket.CloseMessage, []byte{})
return
}
if conn.WriteJSON(metadataToHeader(&msg)) != nil {
@@ -123,13 +134,14 @@ func (ml *msgListenerV1) WSWriter(conn *websocket.Conn) {
}
case <-ticker.C:
// Send ping
conn.SetWriteDeadline(time.Now().Add(writeWaitV1))
if err := conn.SetWriteDeadline(time.Now().Add(writeWaitV1)); err != nil {
slog.Warn().Err(err).Msg("Failed to set write deadline for ping")
}
if conn.WriteMessage(websocket.PingMessage, []byte{}) != nil {
// Write error
return
}
log.Debug().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Msg("Sent ping")
slog.Debug().Msg("Sent ping")
}
}
}

View File

@@ -91,11 +91,16 @@ func (ml *msgListenerV2) WSReader(conn *websocket.Conn) {
slog := log.With().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Logger()
defer ml.Close()
conn.SetReadLimit(maxMessageSizeV2)
conn.SetReadDeadline(time.Now().Add(pongWaitV2))
if err := conn.SetReadDeadline(time.Now().Add(pongWaitV2)); err != nil {
slog.Warn().Err(err).Msg("Failed to setup read deadline")
}
conn.SetPongHandler(func(string) error {
slog.Debug().Msg("Got pong")
conn.SetReadDeadline(time.Now().Add(pongWaitV2))
if err := conn.SetReadDeadline(time.Now().Add(pongWaitV2)); err != nil {
slog.Warn().Err(err).Msg("Failed to set read deadline in pong")
}
return nil
})
@@ -119,6 +124,9 @@ func (ml *msgListenerV2) WSReader(conn *websocket.Conn) {
// WSWriter makes sure the websocket client is still connected
func (ml *msgListenerV2) WSWriter(conn *websocket.Conn) {
slog := log.With().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Logger()
ticker := time.NewTicker(pingPeriodV2)
defer func() {
ticker.Stop()
@@ -129,10 +137,12 @@ func (ml *msgListenerV2) WSWriter(conn *websocket.Conn) {
for {
select {
case event, ok := <-ml.c:
conn.SetWriteDeadline(time.Now().Add(writeWaitV2))
if err := conn.SetWriteDeadline(time.Now().Add(writeWaitV2)); err != nil {
slog.Warn().Err(err).Msg("Failed to set write deadline for msg")
}
if !ok {
// msgListener closed, exit
conn.WriteMessage(websocket.CloseMessage, []byte{})
_ = conn.WriteMessage(websocket.CloseMessage, []byte{})
return
}
if conn.WriteJSON(event) != nil {
@@ -141,13 +151,14 @@ func (ml *msgListenerV2) WSWriter(conn *websocket.Conn) {
}
case <-ticker.C:
// Send ping
conn.SetWriteDeadline(time.Now().Add(writeWaitV2))
if err := conn.SetWriteDeadline(time.Now().Add(writeWaitV2)); err != nil {
slog.Warn().Err(err).Msg("Failed to set write deadline for ping")
}
if conn.WriteMessage(websocket.PingMessage, []byte{}) != nil {
// Write error
return
}
log.Debug().Str("module", "rest").Str("proto", "WebSocket").
Str("remote", conn.RemoteAddr().String()).Msg("Sent ping")
slog.Debug().Msg("Sent ping")
}
}
}