diff --git a/internal/provider/header.go b/internal/provider/header.go new file mode 100644 index 0000000..7c880e7 --- /dev/null +++ b/internal/provider/header.go @@ -0,0 +1,20 @@ +package provider + +import ( + "context" + "net/http" +) + +type customHeader struct { + name string + value string +} + +func NewHeaderProvider(name string, value string) *customHeader { + return &customHeader{name: name, value: value} +} + +func (h *customHeader) Intercept(ctx context.Context, req *http.Request) error { + req.Header.Set(h.name, h.value) + return nil +} diff --git a/internal/util/user_agent.go b/internal/useragent/useragent.go similarity index 98% rename from internal/util/user_agent.go rename to internal/useragent/useragent.go index 058ff89..08771ab 100644 --- a/internal/util/user_agent.go +++ b/internal/useragent/useragent.go @@ -1,4 +1,4 @@ -package util +package useragent import ( "fmt" diff --git a/pinecone/client.go b/pinecone/client.go index 36f419d..9123298 100644 --- a/pinecone/client.go +++ b/pinecone/client.go @@ -6,7 +6,8 @@ import ( "fmt" "github.com/deepmap/oapi-codegen/v2/pkg/securityprovider" "github.com/pinecone-io/go-pinecone/internal/gen/control" - "github.com/pinecone-io/go-pinecone/internal/util" + "github.com/pinecone-io/go-pinecone/internal/provider" + "github.com/pinecone-io/go-pinecone/internal/useragent" "io" "net/http" ) @@ -17,23 +18,10 @@ type Client struct { sourceTag string } -type CustomHeader struct { - userAgent string -} - -func NewUserAgentProvider(userAgent string) *CustomHeader { - return &CustomHeader{userAgent: userAgent} -} - -func (s *CustomHeader) Intercept(ctx context.Context, req *http.Request) error { - req.Header.Set("User-Agent", s.userAgent) - return nil -} - type NewClientParams struct { ApiKey string // optional fields - SourceTag string + SourceTag string } func NewClient(in NewClientParams) (*Client, error) { @@ -42,7 +30,7 @@ func NewClient(in NewClientParams) (*Client, error) { return nil, err } - userAgentProvider := NewUserAgentProvider(util.BuildUserAgent(in.SourceTag)) + userAgentProvider := provider.NewHeaderProvider("User-Agent", useragent.BuildUserAgent(in.SourceTag)) client, err := control.NewClient("https://api.pinecone.io", control.WithRequestEditorFn(apiKeyProvider.Intercept), diff --git a/pinecone/index_connection.go b/pinecone/index_connection.go index 8472969..59fc5c8 100644 --- a/pinecone/index_connection.go +++ b/pinecone/index_connection.go @@ -5,7 +5,7 @@ import ( "crypto/tls" "fmt" "github.com/pinecone-io/go-pinecone/internal/gen/data" - "github.com/pinecone-io/go-pinecone/internal/util" + "github.com/pinecone-io/go-pinecone/internal/useragent" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/metadata" @@ -27,7 +27,7 @@ func newIndexConnection(apiKey string, host string, namespace string, sourceTag grpc.WithTransportCredentials(credentials.NewTLS(config)), grpc.WithAuthority(target), grpc.WithBlock(), - grpc.WithUserAgent(util.BuildUserAgentGRPC(sourceTag)), + grpc.WithUserAgent(useragent.BuildUserAgentGRPC(sourceTag)), ) if err != nil {