github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/pkg/store-client/store_client.go (about)

     1  package storeclient
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"net/http"
     7  
     8  	"github.com/benchkram/bob/pkg/store-client/generated"
     9  )
    10  
    11  type I interface {
    12  	UploadArtifact(ctx context.Context, projectName string, artifactID string, src io.Reader, size int64) (err error)
    13  	ListArtifacts(ctx context.Context, projectName string) (artifactIds []string, err error)
    14  	GetArtifact(ctx context.Context, projectName string, artifactId string) (rc io.ReadCloser, size int64, err error)
    15  }
    16  
    17  type c struct {
    18  	endpoint            string
    19  	client              *generated.Client
    20  	clientWithResponses *generated.ClientWithResponses
    21  }
    22  
    23  func New(endpoint, token string) I {
    24  	c := &c{
    25  		endpoint:            endpoint,
    26  		client:              createClientMust(endpoint, token),
    27  		clientWithResponses: createClientWithResponsesMust(endpoint, token),
    28  	}
    29  
    30  	return c
    31  }
    32  
    33  func createClientWithResponsesMust(endpoint, token string) *generated.ClientWithResponses {
    34  	client, err := createClientWithResponses(endpoint, token)
    35  	if err != nil {
    36  		panic(err)
    37  	}
    38  	return client
    39  }
    40  
    41  func createClientWithResponses(endpoint, token string) (*generated.ClientWithResponses, error) {
    42  	return generated.NewClientWithResponses(endpoint, generated.WithRequestEditorFn(
    43  		func(ctx context.Context, req *http.Request) (err error) {
    44  			if token != "" {
    45  				req.Header.Set("Authorization", "Bearer "+token)
    46  			}
    47  
    48  			return nil
    49  		},
    50  	))
    51  }
    52  
    53  func createClientMust(endpoint, token string) *generated.Client {
    54  	client, err := createClient(endpoint, token)
    55  	if err != nil {
    56  		panic(err)
    57  	}
    58  	return client
    59  }
    60  
    61  func createClient(endpoint, token string) (*generated.Client, error) {
    62  	return generated.NewClient(endpoint, generated.WithRequestEditorFn(
    63  		func(ctx context.Context, req *http.Request) (err error) {
    64  			if token != "" {
    65  				req.Header.Set("Authorization", "Bearer "+token)
    66  			}
    67  
    68  			return nil
    69  		},
    70  	))
    71  }