Skip to content

Commit

Permalink
Add functional options for MGClient
Browse files Browse the repository at this point in the history
  • Loading branch information
kifril committed Feb 28, 2024
1 parent 4058284 commit 9ecd6f8
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
34 changes: 32 additions & 2 deletions v1/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,46 @@ import (
"github.com/google/go-querystring/query"
)

type Option func(*MgClient)

// OptionHTTPClient set custom http.Client for MgClient
func OptionHTTPClient(client *http.Client) func(*MgClient) {
return func(c *MgClient) {
c.httpClient = client
}
}

// OptionLogger sets the provided logger instance into the MgClient
func OptionLogger(logger BasicLogger) func(*MgClient) {
return func(c *MgClient) {
c.logger = logger
}
}

// OptionDebug enables debug mode for MgClient
func OptionDebug() func(*MgClient) {
return func(c *MgClient) {
c.Debug = true
}
}

// New initialize client
func New(url string, token string) *MgClient {
return &MgClient{
func New(url string, token string, opts ...Option) *MgClient {
c := &MgClient{
URL: url,
Token: token,
httpClient: &http.Client{Timeout: time.Minute},
}

for _, opt := range opts {
opt(c)
}

return c
}

// WithLogger sets the provided logger instance into the Client.
// Deprecated: Use functional option OptionLogger instead
func (c *MgClient) WithLogger(logger BasicLogger) *MgClient {
c.logger = logger
return c
Expand Down
12 changes: 4 additions & 8 deletions v1/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,12 @@ var (
debug, _ = strconv.ParseBool(os.Getenv("DEBUG"))
)

func client() *MgClient {
c := New(mgURL, mgToken)

func client(opts ...Option) *MgClient {
if debug != false {
c.Debug = true
opts = append(opts, OptionDebug())
}

return c
return New(mgURL, mgToken, opts...)
}

func TestMgClient_Bots(t *testing.T) {
Expand Down Expand Up @@ -898,9 +896,7 @@ func TestMgClient_DebugWithLogger(t *testing.T) {
var buf bytes.Buffer
logger := log.New(&buf, "Custom log prefix ", 0)

c := client()
c.Debug = true
c.WithLogger(logger)
c := client(OptionDebug(), OptionLogger(logger))

c.writeLog("Test log string")

Expand Down

0 comments on commit 9ecd6f8

Please sign in to comment.