options.go raw

   1  package internal
   2  
   3  import (
   4  	"net/http"
   5  	"net/url"
   6  )
   7  
   8  type Option func(c *Client) error
   9  
  10  func WithAuthKey(authEmail, authKey string) Option {
  11  	return func(c *Client) error {
  12  		c.authEmail = authEmail
  13  		c.authKey = authKey
  14  
  15  		return nil
  16  	}
  17  }
  18  
  19  func WithAuthToken(authToken string) Option {
  20  	return func(c *Client) error {
  21  		c.authToken = authToken
  22  
  23  		return nil
  24  	}
  25  }
  26  
  27  func WithBaseURL(baseURL string) Option {
  28  	return func(c *Client) error {
  29  		if baseURL == "" {
  30  			return nil
  31  		}
  32  
  33  		bu, err := url.Parse(baseURL)
  34  		if err != nil {
  35  			return err
  36  		}
  37  
  38  		c.baseURL = bu
  39  
  40  		return nil
  41  	}
  42  }
  43  
  44  func WithHTTPClient(client *http.Client) Option {
  45  	return func(c *Client) error {
  46  		if client != nil {
  47  			c.HTTPClient = client
  48  		}
  49  
  50  		return nil
  51  	}
  52  }
  53