Use functional options for the client constructor
This commit is contained in:
		
							
								
								
									
										19
									
								
								client.go
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								client.go
									
									
									
									
									
								
							| @@ -71,15 +71,28 @@ var errorMap = map[int]error{ | ||||
| 	523:                            errors.New("Something went wrong on LIFX's end"), | ||||
| } | ||||
|  | ||||
| func NewClient(accessToken string) *Client { | ||||
| func NewClient(accessToken string, options ...func(*Client)) *Client { | ||||
| 	var c *Client | ||||
| 	tr := &http.Transport{ | ||||
| 		//TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper), | ||||
| 	} | ||||
| 	return &Client{ | ||||
|  | ||||
| 	c = &Client{ | ||||
| 		accessToken: accessToken, | ||||
| 		userAgent:   defaultUserAgent, | ||||
| 		Client:      &http.Client{Transport: tr}, | ||||
| 	} | ||||
|  | ||||
| 	for _, option := range options { | ||||
| 		option(c) | ||||
| 	} | ||||
|  | ||||
| 	return c | ||||
| } | ||||
|  | ||||
| func WithUserAgent(userAgent string) func(*Client) { | ||||
| 	return func(c *Client) { | ||||
| 		c.userAgent = userAgent | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func NewClientWithUserAgent(accessToken string, userAgent string) *Client { | ||||
|   | ||||
| @@ -223,7 +223,10 @@ func Main(args []string) (int, error) { | ||||
|  | ||||
| 	command := args[1] | ||||
|  | ||||
| 	c := lifx.NewClientWithUserAgent(config.AccessToken, userAgent) | ||||
| 	c := lifx.NewClient( | ||||
| 		config.AccessToken, | ||||
| 		lifx.WithUserAgent(userAgent), | ||||
| 	) | ||||
|  | ||||
| 	cmdArgs := CmdArgs{ | ||||
| 		Client: c, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user