From 5ee9ef500ed50a7e54f6c71e61b154ea6d2e7cd9 Mon Sep 17 00:00:00 2001 From: Jay Date: Mon, 26 Jan 2026 10:28:39 -0500 Subject: [PATCH] Moved code to top-level. --- ws/config.go => config.go | 2 +- ws/config_test.go => config_test.go | 2 +- ws/connection.go => connection.go | 76 +---------------- ..._close_test.go => connection_close_test.go | 2 +- ...ne_test.go => connection_goroutine_test.go | 2 +- ...on_send_test.go => connection_send_test.go | 2 +- ws/connection_test.go => connection_test.go | 2 +- honeybee.go | 1 - ws/mocks_test.go => mocks_test.go | 2 +- ws/retry.go => retry.go | 2 +- ws/retry_test.go => retry_test.go | 2 +- socket.go | 82 +++++++++++++++++++ ...onnection_socket_test.go => socket_test.go | 2 +- ws/url.go => url.go | 2 +- ws/url_test.go => url_test.go | 2 +- ws/ws_test.go | 2 - 16 files changed, 95 insertions(+), 90 deletions(-) rename ws/config.go => config.go (99%) rename ws/config_test.go => config_test.go (99%) rename ws/connection.go => connection.go (77%) rename ws/connection_close_test.go => connection_close_test.go (99%) rename ws/connection_goroutine_test.go => connection_goroutine_test.go (99%) rename ws/connection_send_test.go => connection_send_test.go (99%) rename ws/connection_test.go => connection_test.go (99%) delete mode 100644 honeybee.go rename ws/mocks_test.go => mocks_test.go (99%) rename ws/retry.go => retry.go (98%) rename ws/retry_test.go => retry_test.go (99%) create mode 100644 socket.go rename ws/connection_socket_test.go => socket_test.go (99%) rename ws/url.go => url.go (94%) rename ws/url_test.go => url_test.go (99%) delete mode 100644 ws/ws_test.go diff --git a/ws/config.go b/config.go similarity index 99% rename from ws/config.go rename to config.go index 8e0f27e..bb14f92 100644 --- a/ws/config.go +++ b/config.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "git.wisehodl.dev/jay/go-honeybee/errors" diff --git a/ws/config_test.go b/config_test.go similarity index 99% rename from ws/config_test.go rename to config_test.go index 6e7bf0e..99c719d 100644 --- a/ws/config_test.go +++ b/config_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "git.wisehodl.dev/jay/go-honeybee/errors" diff --git a/ws/connection.go b/connection.go similarity index 77% rename from ws/connection.go rename to connection.go index e437d60..b09a17f 100644 --- a/ws/connection.go +++ b/connection.go @@ -1,8 +1,7 @@ -package ws +package honeybee import ( "fmt" - "net/http" "net/url" "sync" "time" @@ -11,79 +10,6 @@ import ( "github.com/gorilla/websocket" ) -type Dialer interface { - Dial(urlStr string, requestHeader http.Header) (Socket, *http.Response, error) -} - -func NewDialer() Dialer { - return NewGorillaDialer() -} - -type GorillaDialer struct { - *websocket.Dialer -} - -func NewGorillaDialer() *GorillaDialer { - return &GorillaDialer{ - Dialer: &websocket.Dialer{ - HandshakeTimeout: 45 * time.Second, - ReadBufferSize: 1024, - WriteBufferSize: 1024, - }, - } -} - -// Returns the Socket interface -func (d *GorillaDialer) Dial( - urlStr string, requestHeader http.Header, -) ( - Socket, *http.Response, error, -) { - conn, resp, err := d.Dialer.Dial(urlStr, requestHeader) - return conn, resp, err -} - -type Socket interface { - WriteMessage(messageType int, data []byte) error - ReadMessage() (messageType int, p []byte, err error) - Close() error - - SetReadDeadline(t time.Time) error - SetWriteDeadline(t time.Time) error - SetCloseHandler(h func(code int, text string) error) -} - -func AcquireSocket( - retryMgr *RetryManager, - dialer Dialer, - urlStr string, -) (Socket, *http.Response, error) { - if retryMgr == nil { - return nil, nil, errors.NewConnectionError("retry manager cannot be nil") - } - if dialer == nil { - return nil, nil, errors.NewConnectionError("dialer cannot be nil") - } - if urlStr == "" { - return nil, nil, errors.NewConnectionError("URL cannot be empty") - } - - for { - socket, resp, err := dialer.Dial(urlStr, nil) - if err == nil { - return socket, resp, nil - } - - if !retryMgr.ShouldRetry() { - return nil, nil, err - } - - delay := retryMgr.CalculateDelay() - time.Sleep(delay) - retryMgr.RecordRetry() - } -} - type ConnectionState int const ( diff --git a/ws/connection_close_test.go b/connection_close_test.go similarity index 99% rename from ws/connection_close_test.go rename to connection_close_test.go index 37550e1..e094c6b 100644 --- a/ws/connection_close_test.go +++ b/connection_close_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "fmt" diff --git a/ws/connection_goroutine_test.go b/connection_goroutine_test.go similarity index 99% rename from ws/connection_goroutine_test.go rename to connection_goroutine_test.go index 7a5e077..d59d4f3 100644 --- a/ws/connection_goroutine_test.go +++ b/connection_goroutine_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "fmt" diff --git a/ws/connection_send_test.go b/connection_send_test.go similarity index 99% rename from ws/connection_send_test.go rename to connection_send_test.go index 11b40af..54c0c3a 100644 --- a/ws/connection_send_test.go +++ b/connection_send_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "fmt" diff --git a/ws/connection_test.go b/connection_test.go similarity index 99% rename from ws/connection_test.go rename to connection_test.go index 4012fd8..8feccfe 100644 --- a/ws/connection_test.go +++ b/connection_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "fmt" diff --git a/honeybee.go b/honeybee.go deleted file mode 100644 index 72aab9a..0000000 --- a/honeybee.go +++ /dev/null @@ -1 +0,0 @@ -package honeybee diff --git a/ws/mocks_test.go b/mocks_test.go similarity index 99% rename from ws/mocks_test.go rename to mocks_test.go index 9794dde..bc3ddf8 100644 --- a/ws/mocks_test.go +++ b/mocks_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "github.com/stretchr/testify/assert" diff --git a/ws/retry.go b/retry.go similarity index 98% rename from ws/retry.go rename to retry.go index 4fbb7da..5c8995f 100644 --- a/ws/retry.go +++ b/retry.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "math" diff --git a/ws/retry_test.go b/retry_test.go similarity index 99% rename from ws/retry_test.go rename to retry_test.go index 5f5498e..f7d90ae 100644 --- a/ws/retry_test.go +++ b/retry_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "github.com/stretchr/testify/assert" diff --git a/socket.go b/socket.go new file mode 100644 index 0000000..94756bc --- /dev/null +++ b/socket.go @@ -0,0 +1,82 @@ +package honeybee + +import ( + "net/http" + "time" + + "git.wisehodl.dev/jay/go-honeybee/errors" + "github.com/gorilla/websocket" +) + +type Dialer interface { + Dial(urlStr string, requestHeader http.Header) (Socket, *http.Response, error) +} + +func NewDialer() Dialer { + return NewGorillaDialer() +} + +type GorillaDialer struct { + *websocket.Dialer +} + +func NewGorillaDialer() *GorillaDialer { + return &GorillaDialer{ + Dialer: &websocket.Dialer{ + HandshakeTimeout: 45 * time.Second, + ReadBufferSize: 1024, + WriteBufferSize: 1024, + }, + } +} + +// Returns the Socket interface +func (d *GorillaDialer) Dial( + urlStr string, requestHeader http.Header, +) ( + Socket, *http.Response, error, +) { + conn, resp, err := d.Dialer.Dial(urlStr, requestHeader) + return conn, resp, err +} + +type Socket interface { + WriteMessage(messageType int, data []byte) error + ReadMessage() (messageType int, p []byte, err error) + Close() error + + SetReadDeadline(t time.Time) error + SetWriteDeadline(t time.Time) error + SetCloseHandler(h func(code int, text string) error) +} + +func AcquireSocket( + retryMgr *RetryManager, + dialer Dialer, + urlStr string, +) (Socket, *http.Response, error) { + if retryMgr == nil { + return nil, nil, errors.NewConnectionError("retry manager cannot be nil") + } + if dialer == nil { + return nil, nil, errors.NewConnectionError("dialer cannot be nil") + } + if urlStr == "" { + return nil, nil, errors.NewConnectionError("URL cannot be empty") + } + + for { + socket, resp, err := dialer.Dial(urlStr, nil) + if err == nil { + return socket, resp, nil + } + + if !retryMgr.ShouldRetry() { + return nil, nil, err + } + + delay := retryMgr.CalculateDelay() + time.Sleep(delay) + retryMgr.RecordRetry() + } +} diff --git a/ws/connection_socket_test.go b/socket_test.go similarity index 99% rename from ws/connection_socket_test.go rename to socket_test.go index dc094b4..5c5e6c4 100644 --- a/ws/connection_socket_test.go +++ b/socket_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "errors" diff --git a/ws/url.go b/url.go similarity index 94% rename from ws/url.go rename to url.go index 99c2983..4db586f 100644 --- a/ws/url.go +++ b/url.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "net/url" diff --git a/ws/url_test.go b/url_test.go similarity index 99% rename from ws/url_test.go rename to url_test.go index 0a25b8b..be59986 100644 --- a/ws/url_test.go +++ b/url_test.go @@ -1,4 +1,4 @@ -package ws +package honeybee import ( "git.wisehodl.dev/jay/go-honeybee/errors" diff --git a/ws/ws_test.go b/ws/ws_test.go deleted file mode 100644 index 060be4a..0000000 --- a/ws/ws_test.go +++ /dev/null @@ -1,2 +0,0 @@ -// ws package end-to-end tests -package ws