Basic working client

This commit is contained in:
2024-11-19 17:00:05 -05:00
parent e72e167a3e
commit 3655f7eae8
6 changed files with 91 additions and 1133 deletions

View File

@ -2,6 +2,7 @@ package eia
import (
"context"
"fmt"
"net/url"
"slices"
"time"
@ -29,6 +30,7 @@ type Client struct {
ctx context.Context
apiKey string
healthCheckTimeout time.Duration
*eiaapi.Client
*eiaapi.ClientWithResponses
}
@ -41,6 +43,19 @@ type ClientOpts struct {
HealthCheckTimeout *time.Duration // Timeout for Ping() function, default is 10s
}
type Facet struct {
Name string
Data interface{}
}
func NewFacets(facets ...*Facet) *eiaapi.Facets {
newFacets := make(map[string]interface{}, len(facets))
for _, f := range facets {
newFacets[fmt.Sprintf("facets[%s][]", f.Name)] = f.Data
}
return &newFacets
}
func NewClient(opts *ClientOpts) (*Client, error) {
baseURL := defaultBaseURL
if opts.BaseURL != nil {
@ -80,7 +95,12 @@ func NewClient(opts *ClientOpts) (*Client, error) {
eiaapi.WithRequestEditorFn(newLoggingMiddleware(opts.Logger, logLevel)))
}
client, err := eiaapi.NewClientWithResponses(baseURL, slices.Clip(middlewares)...)
client, err := eiaapi.NewClient(baseURL, slices.Clip(middlewares)...)
if err != nil {
return nil, err
}
clientWithResponses, err := eiaapi.NewClientWithResponses(baseURL, slices.Clip(middlewares)...)
if err != nil {
return nil, err
}
@ -89,6 +109,7 @@ func NewClient(opts *ClientOpts) (*Client, error) {
apiKey: opts.APIKey,
ctx: opts.Context,
healthCheckTimeout: hcTimeout,
ClientWithResponses: client,
Client: client,
ClientWithResponses: clientWithResponses,
}, nil
}