initial commit

This commit is contained in:
Mike Mason
2023-07-01 00:04:52 +00:00
commit 80fb879ef6
65 changed files with 3544 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
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
}