mirror of
https://github.com/retailcrm/mg-bot-api-client-go.git
synced 2024-11-21 20:36:05 +03:00
Add functional options for MGClient
This commit is contained in:
commit
edf67afb08
34
v1/client.go
34
v1/client.go
@ -14,16 +14,46 @@ import (
|
|||||||
"github.com/google/go-querystring/query"
|
"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
|
// New initialize client
|
||||||
func New(url string, token string) *MgClient {
|
func New(url string, token string, opts ...Option) *MgClient {
|
||||||
return &MgClient{
|
c := &MgClient{
|
||||||
URL: url,
|
URL: url,
|
||||||
Token: token,
|
Token: token,
|
||||||
httpClient: &http.Client{Timeout: time.Minute},
|
httpClient: &http.Client{Timeout: time.Minute},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithLogger sets the provided logger instance into the Client.
|
// WithLogger sets the provided logger instance into the Client.
|
||||||
|
// Deprecated: Use functional option OptionLogger instead
|
||||||
func (c *MgClient) WithLogger(logger BasicLogger) *MgClient {
|
func (c *MgClient) WithLogger(logger BasicLogger) *MgClient {
|
||||||
c.logger = logger
|
c.logger = logger
|
||||||
return c
|
return c
|
||||||
|
@ -44,14 +44,12 @@ var (
|
|||||||
debug, _ = strconv.ParseBool(os.Getenv("DEBUG"))
|
debug, _ = strconv.ParseBool(os.Getenv("DEBUG"))
|
||||||
)
|
)
|
||||||
|
|
||||||
func client() *MgClient {
|
func client(opts ...Option) *MgClient {
|
||||||
c := New(mgURL, mgToken)
|
|
||||||
|
|
||||||
if debug != false {
|
if debug != false {
|
||||||
c.Debug = true
|
opts = append(opts, OptionDebug())
|
||||||
}
|
}
|
||||||
|
|
||||||
return c
|
return New(mgURL, mgToken, opts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMgClient_Bots(t *testing.T) {
|
func TestMgClient_Bots(t *testing.T) {
|
||||||
@ -951,9 +949,7 @@ func TestMgClient_DebugWithLogger(t *testing.T) {
|
|||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
logger := log.New(&buf, "Custom log prefix ", 0)
|
logger := log.New(&buf, "Custom log prefix ", 0)
|
||||||
|
|
||||||
c := client()
|
c := client(OptionDebug(), OptionLogger(logger))
|
||||||
c.Debug = true
|
|
||||||
c.WithLogger(logger)
|
|
||||||
|
|
||||||
c.writeLog("Test log string")
|
c.writeLog("Test log string")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user