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 }