package emgql import ( "net/http" "net/url" "time" provider "go.equinixmetal.net/infra9-metal-bridge/internal/metal/providers" "go.uber.org/zap" ) const ( defaultHTTPTimeout = 5 * time.Second ) var ( DefaultHTTPClient = &http.Client{ Timeout: defaultHTTPTimeout, } ) var _ provider.Provider = &Client{} type Client struct { logger *zap.SugaredLogger httpClient *http.Client baseURL *url.URL } // New creates a new emapi client func New(options ...Option) (*Client, error) { client := &Client{} for _, opt := range options { if err := opt(client); err != nil { return nil, err } } if client.logger == nil { client.logger = zap.NewNop().Sugar() } if client.httpClient == nil { client.httpClient = DefaultHTTPClient } return client, nil }