diff --git a/internal/connectors/httpwrapper/client.go b/internal/connectors/httpwrapper/client.go index 2812b5d8..b62b1c40 100644 --- a/internal/connectors/httpwrapper/client.go +++ b/internal/connectors/httpwrapper/client.go @@ -9,8 +9,11 @@ import ( "net/http" "time" + "github.com/formancehq/payments/internal/connectors/metrics" "github.com/hashicorp/go-hclog" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "golang.org/x/oauth2" ) @@ -33,11 +36,12 @@ var ( type Client interface { // Do performs an HTTP request while handling errors and unmarshaling success and error responses into the provided interfaces // expectedBody and errorBody should be pointers to structs - Do(req *http.Request, expectedBody, errorBody any) (statusCode int, err error) + Do(ctx context.Context, req *http.Request, expectedBody, errorBody any) (statusCode int, err error) } type client struct { - httpClient *http.Client + httpClient *http.Client + commonMetricsAttributes []attribute.KeyValue httpErrorCheckerFn func(statusCode int) error } @@ -66,17 +70,33 @@ func NewClient(config *Config) (Client, error) { config.HttpErrorCheckerFn = defaultHttpErrorCheckerFn } + metricsAttributes := make([]attribute.KeyValue, 0) + for i := range config.CommonMetricsAttributes { + metricsAttributes = append(metricsAttributes, config.CommonMetricsAttributes[i]) + } + return &client{ - httpErrorCheckerFn: config.HttpErrorCheckerFn, - httpClient: httpClient, + httpErrorCheckerFn: config.HttpErrorCheckerFn, + httpClient: httpClient, + commonMetricsAttributes: metricsAttributes, }, nil } -func (c *client) Do(req *http.Request, expectedBody, errorBody any) (int, error) { +func (c *client) Do(ctx context.Context, req *http.Request, expectedBody, errorBody any) (int, error) { + start := time.Now() + attrs := c.commonMetricsAttributes + attrs = append(attrs, attribute.String("endpoint", req.URL.Path)) + defer func() { + f := metrics.GetMetricsRegistry().ConnectorPSPCallLatencies().Record + opts := metric.WithAttributes(attrs...) + f(ctx, time.Since(start).Milliseconds(), opts) + }() + resp, err := c.httpClient.Do(req) if err != nil { return 0, fmt.Errorf("failed to make request: %w", err) } + attrs = append(attrs, attribute.Int("status", resp.StatusCode)) reqErr := c.httpErrorCheckerFn(resp.StatusCode) // the caller doesn't care about the response body so we return early diff --git a/internal/connectors/httpwrapper/client_test.go b/internal/connectors/httpwrapper/client_test.go index 6079350f..57fbe7bc 100644 --- a/internal/connectors/httpwrapper/client_test.go +++ b/internal/connectors/httpwrapper/client_test.go @@ -1,6 +1,7 @@ package httpwrapper_test import ( + "context" "net/http" "net/http/httptest" "net/url" @@ -64,7 +65,7 @@ var _ = Describe("ClientWrapper", func() { Expect(err).To(BeNil()) res := &successRes{} - code, doErr := client.Do(req, res, nil) + code, doErr := client.Do(context.Background(), req, res, nil) Expect(code).To(Equal(http.StatusOK)) Expect(doErr).To(BeNil()) Expect(res.ID).To(Equal("someid")) @@ -74,7 +75,7 @@ var _ = Describe("ClientWrapper", func() { Expect(err).To(BeNil()) res := &errorRes{} - code, doErr := client.Do(req, &successRes{}, res) + code, doErr := client.Do(context.Background(), req, &successRes{}, res) Expect(code).To(Equal(http.StatusInternalServerError)) Expect(doErr).To(MatchError(httpwrapper.ErrStatusCodeServerError)) Expect(res.Code).To(Equal("err123")) @@ -84,7 +85,7 @@ var _ = Describe("ClientWrapper", func() { Expect(err).To(BeNil()) res := &errorRes{} - code, doErr := client.Do(req, &successRes{}, res) + code, doErr := client.Do(context.Background(), req, &successRes{}, res) Expect(code).To(Equal(http.StatusBadRequest)) Expect(doErr).To(MatchError(httpwrapper.ErrStatusCodeClientError)) Expect(res.Code).To(Equal("err123")) @@ -94,7 +95,7 @@ var _ = Describe("ClientWrapper", func() { Expect(err).To(BeNil()) res := &errorRes{} - code, doErr := client.Do(req, &successRes{}, res) + code, doErr := client.Do(context.Background(), req, &successRes{}, res) Expect(code).To(Equal(0)) Expect(doErr).To(MatchError(ContainSubstring("failed to make request"))) }) diff --git a/internal/connectors/httpwrapper/config.go b/internal/connectors/httpwrapper/config.go index 43c497d1..311773d6 100644 --- a/internal/connectors/httpwrapper/config.go +++ b/internal/connectors/httpwrapper/config.go @@ -4,11 +4,13 @@ import ( "net/http" "time" + "go.opentelemetry.io/otel/attribute" "golang.org/x/oauth2/clientcredentials" ) type Config struct { - HttpErrorCheckerFn func(code int) error + HttpErrorCheckerFn func(code int) error + CommonMetricsAttributes []attribute.KeyValue Timeout time.Duration Transport http.RoundTripper diff --git a/internal/connectors/metrics/metrics.go b/internal/connectors/metrics/metrics.go index 37364e37..c85090c1 100644 --- a/internal/connectors/metrics/metrics.go +++ b/internal/connectors/metrics/metrics.go @@ -1,6 +1,7 @@ package metrics import ( + "github.com/hashicorp/go-hclog" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/noop" ) @@ -8,6 +9,7 @@ import ( var registry MetricsRegistry func GetMetricsRegistry() MetricsRegistry { + hclog.Default().Info("get metrics registry", "name", "payments") if registry == nil { registry = NewNoOpMetricsRegistry() } @@ -27,6 +29,7 @@ type metricsRegistry struct { func RegisterMetricsRegistry(meterProvider metric.MeterProvider) (MetricsRegistry, error) { meter := meterProvider.Meter("payments") + hclog.Default().Info("REGISTERING METER", "name", "payments") connectorPSPCalls, err := meter.Int64Counter( "payments_connectors_psp_calls", diff --git a/internal/connectors/plugins/public/adyen/client/client_generated.go b/internal/connectors/plugins/public/adyen/client/client_generated.go index 6ffaa4cc..64b65630 100644 --- a/internal/connectors/plugins/public/adyen/client/client_generated.go +++ b/internal/connectors/plugins/public/adyen/client/client_generated.go @@ -23,6 +23,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/bankingcircle/client/accounts.go b/internal/connectors/plugins/public/bankingcircle/client/accounts.go index 2d98e467..24ce5ec9 100644 --- a/internal/connectors/plugins/public/bankingcircle/client/accounts.go +++ b/internal/connectors/plugins/public/bankingcircle/client/accounts.go @@ -66,7 +66,7 @@ func (c *Client) GetAccounts(ctx context.Context, page int, pageSize int, fromOp } res := response{Result: make([]Account, 0)} - statusCode, err := c.httpClient.Do(req, &res, nil) + statusCode, err := c.httpClient.Do(ctx, req, &res, nil) if err != nil { return nil, fmt.Errorf("failed to get accounts, status code %d: %w", statusCode, err) } @@ -90,7 +90,7 @@ func (c *Client) GetAccount(ctx context.Context, accountID string) (*Account, er req.Header.Set("Authorization", "Bearer "+c.accessToken) var account Account - statusCode, err := c.httpClient.Do(req, &account, nil) + statusCode, err := c.httpClient.Do(ctx, req, &account, nil) if err != nil { return nil, fmt.Errorf("failed to get account, status code %d: %w", statusCode, err) } diff --git a/internal/connectors/plugins/public/bankingcircle/client/auth.go b/internal/connectors/plugins/public/bankingcircle/client/auth.go index 5930abc0..fe25ba00 100644 --- a/internal/connectors/plugins/public/bankingcircle/client/auth.go +++ b/internal/connectors/plugins/public/bankingcircle/client/auth.go @@ -35,7 +35,7 @@ func (c *Client) login(ctx context.Context) error { var res response var errors []responseError - statusCode, err := c.httpClient.Do(req, &res, &errors) + statusCode, err := c.httpClient.Do(ctx, req, &res, &errors) if err != nil { if len(errors) > 0 { log.Printf("bankingcircle auth failed with code %s: %s", errors[0].ErrorCode, errors[0].ErrorText) diff --git a/internal/connectors/plugins/public/bankingcircle/client/payments.go b/internal/connectors/plugins/public/bankingcircle/client/payments.go index e63b8f05..26704b53 100644 --- a/internal/connectors/plugins/public/bankingcircle/client/payments.go +++ b/internal/connectors/plugins/public/bankingcircle/client/payments.go @@ -110,7 +110,7 @@ func (c *Client) GetPayments(ctx context.Context, page int, pageSize int) ([]Pay } res := response{Result: make([]Payment, 0)} - statusCode, err := c.httpClient.Do(req, &res, nil) + statusCode, err := c.httpClient.Do(ctx, req, &res, nil) if err != nil { return nil, fmt.Errorf("failed to get payments, status code %d: %w", statusCode, err) } @@ -133,7 +133,7 @@ func (c *Client) GetPayment(ctx context.Context, paymentID string) (*Payment, er req.Header.Set("Authorization", "Bearer "+c.accessToken) var res Payment - statusCode, err := c.httpClient.Do(req, &res, nil) + statusCode, err := c.httpClient.Do(ctx, req, &res, nil) if err != nil { return nil, fmt.Errorf("failed to get payment, status code %d: %w", statusCode, err) } @@ -161,7 +161,7 @@ func (c *Client) GetPaymentStatus(ctx context.Context, paymentID string) (*Statu req.Header.Set("Authorization", "Bearer "+c.accessToken) var res StatusResponse - statusCode, err := c.httpClient.Do(req, &res, nil) + statusCode, err := c.httpClient.Do(ctx, req, &res, nil) if err != nil { return nil, fmt.Errorf("failed to get payment status, status code %d: %w", statusCode, err) } diff --git a/internal/connectors/plugins/public/bankingcircle/client/transfer_payouts.go b/internal/connectors/plugins/public/bankingcircle/client/transfer_payouts.go index 8154af28..2de6498c 100644 --- a/internal/connectors/plugins/public/bankingcircle/client/transfer_payouts.go +++ b/internal/connectors/plugins/public/bankingcircle/client/transfer_payouts.go @@ -57,7 +57,7 @@ func (c *Client) InitiateTransferOrPayouts(ctx context.Context, transferRequest req.Header.Set("Authorization", "Bearer "+c.accessToken) var res PaymentResponse - statusCode, err := c.httpClient.Do(req, &res, nil) + statusCode, err := c.httpClient.Do(ctx, req, &res, nil) if err != nil { return nil, fmt.Errorf("failed to make payout, status code %d: %w", statusCode, err) } diff --git a/internal/connectors/plugins/public/currencycloud/client/accounts.go b/internal/connectors/plugins/public/currencycloud/client/accounts.go index a7411b98..f1423c7f 100644 --- a/internal/connectors/plugins/public/currencycloud/client/accounts.go +++ b/internal/connectors/plugins/public/currencycloud/client/accounts.go @@ -49,7 +49,7 @@ func (c *client) GetAccounts(ctx context.Context, page int, pageSize int) ([]*Ac res := response{Accounts: make([]*Account, 0)} var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, 0, fmt.Errorf("failed to get accounts: %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/auth.go b/internal/connectors/plugins/public/currencycloud/client/auth.go index 07b0547a..cb80eb12 100644 --- a/internal/connectors/plugins/public/currencycloud/client/auth.go +++ b/internal/connectors/plugins/public/currencycloud/client/auth.go @@ -35,7 +35,7 @@ func (c *client) authenticate(ctx context.Context) error { var res response var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return fmt.Errorf("failed to get authenticate: %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/balances.go b/internal/connectors/plugins/public/currencycloud/client/balances.go index c787d4ca..22fd65be 100644 --- a/internal/connectors/plugins/public/currencycloud/client/balances.go +++ b/internal/connectors/plugins/public/currencycloud/client/balances.go @@ -52,7 +52,7 @@ func (c *client) GetBalances(ctx context.Context, page int, pageSize int) ([]*Ba res := response{Balances: make([]*Balance, 0)} var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, 0, fmt.Errorf("failed to get balances %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/beneficiaries.go b/internal/connectors/plugins/public/currencycloud/client/beneficiaries.go index 7c3aa796..aa639097 100644 --- a/internal/connectors/plugins/public/currencycloud/client/beneficiaries.go +++ b/internal/connectors/plugins/public/currencycloud/client/beneficiaries.go @@ -51,7 +51,7 @@ func (c *client) GetBeneficiaries(ctx context.Context, page int, pageSize int) ( res := response{Beneficiaries: make([]*Beneficiary, 0)} var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, 0, fmt.Errorf("failed to get beneficiaries %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/client_generated.go b/internal/connectors/plugins/public/currencycloud/client/client_generated.go index 5beeb044..ae9d80d5 100644 --- a/internal/connectors/plugins/public/currencycloud/client/client_generated.go +++ b/internal/connectors/plugins/public/currencycloud/client/client_generated.go @@ -21,6 +21,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/currencycloud/client/contacts.go b/internal/connectors/plugins/public/currencycloud/client/contacts.go index 782d031c..63fc2f30 100644 --- a/internal/connectors/plugins/public/currencycloud/client/contacts.go +++ b/internal/connectors/plugins/public/currencycloud/client/contacts.go @@ -39,7 +39,7 @@ func (c *client) GetContactID(ctx context.Context, accountID string) (*Contact, res := Contacts{Contacts: make([]*Contact, 0)} var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get contacts %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/payouts.go b/internal/connectors/plugins/public/currencycloud/client/payouts.go index ef21ec30..d3f8d3fb 100644 --- a/internal/connectors/plugins/public/currencycloud/client/payouts.go +++ b/internal/connectors/plugins/public/currencycloud/client/payouts.go @@ -72,7 +72,7 @@ func (c *client) InitiatePayout(ctx context.Context, payoutRequest *PayoutReques var payoutResponse PayoutResponse var errRes currencyCloudError - _, err = c.httpClient.Do(req, &payoutResponse, &errRes) + _, err = c.httpClient.Do(ctx, req, &payoutResponse, &errRes) if err != nil { return nil, fmt.Errorf("failed to create payout: %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/transactions.go b/internal/connectors/plugins/public/currencycloud/client/transactions.go index 2c2be230..d2876292 100644 --- a/internal/connectors/plugins/public/currencycloud/client/transactions.go +++ b/internal/connectors/plugins/public/currencycloud/client/transactions.go @@ -64,7 +64,7 @@ func (c *client) GetTransactions(ctx context.Context, page int, pageSize int, up res := response{Transactions: make([]Transaction, 0)} var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, 0, fmt.Errorf("failed to get transactions: %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/currencycloud/client/transfers.go b/internal/connectors/plugins/public/currencycloud/client/transfers.go index 1fd958b8..971863dc 100644 --- a/internal/connectors/plugins/public/currencycloud/client/transfers.go +++ b/internal/connectors/plugins/public/currencycloud/client/transfers.go @@ -72,7 +72,7 @@ func (c *client) InitiateTransfer(ctx context.Context, transferRequest *Transfer var res TransferResponse var errRes currencyCloudError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to create transfer: %w, %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/mangopay/client/bank_accounts.go b/internal/connectors/plugins/public/mangopay/client/bank_accounts.go index 8863bca1..0402bbd3 100644 --- a/internal/connectors/plugins/public/mangopay/client/bank_accounts.go +++ b/internal/connectors/plugins/public/mangopay/client/bank_accounts.go @@ -130,7 +130,7 @@ func (c *client) createBankAccount(ctx context.Context, endpoint string, req any httpReq.Header.Set("Content-Type", "application/json") var bankAccount BankAccount - statusCode, err := c.httpClient.Do(httpReq, &bankAccount, nil) + statusCode, err := c.httpClient.Do(ctx, httpReq, &bankAccount, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to create bank account: %w", err), statusCode) } @@ -162,7 +162,7 @@ func (c *client) GetBankAccounts(ctx context.Context, userID string, page, pageS req.URL.RawQuery = q.Encode() var bankAccounts []BankAccount - statusCode, err := c.httpClient.Do(req, &bankAccounts, nil) + statusCode, err := c.httpClient.Do(ctx, req, &bankAccounts, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get bank accounts: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/payin.go b/internal/connectors/plugins/public/mangopay/client/payin.go index 7afdd728..82154d97 100644 --- a/internal/connectors/plugins/public/mangopay/client/payin.go +++ b/internal/connectors/plugins/public/mangopay/client/payin.go @@ -41,7 +41,7 @@ func (c *client) GetPayin(ctx context.Context, payinID string) (*PayinResponse, } var payinResponse PayinResponse - statusCode, err := c.httpClient.Do(req, &payinResponse, nil) + statusCode, err := c.httpClient.Do(ctx, req, &payinResponse, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get payin: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/payout.go b/internal/connectors/plugins/public/mangopay/client/payout.go index c7190e05..ef479a4c 100644 --- a/internal/connectors/plugins/public/mangopay/client/payout.go +++ b/internal/connectors/plugins/public/mangopay/client/payout.go @@ -64,7 +64,7 @@ func (c *client) InitiatePayout(ctx context.Context, payoutRequest *PayoutReques req.Header.Set("Idempotency-Key", payoutRequest.Reference) var payoutResponse PayoutResponse - statusCode, err := c.httpClient.Do(req, &payoutResponse, nil) + statusCode, err := c.httpClient.Do(ctx, req, &payoutResponse, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to initiate payout: %w", err), statusCode) } @@ -85,7 +85,7 @@ func (c *client) GetPayout(ctx context.Context, payoutID string) (*PayoutRespons } var payoutResponse PayoutResponse - statusCode, err := c.httpClient.Do(req, &payoutResponse, nil) + statusCode, err := c.httpClient.Do(ctx, req, &payoutResponse, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get payout: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/refund.go b/internal/connectors/plugins/public/mangopay/client/refund.go index d68526b2..9d9eb639 100644 --- a/internal/connectors/plugins/public/mangopay/client/refund.go +++ b/internal/connectors/plugins/public/mangopay/client/refund.go @@ -42,7 +42,7 @@ func (c *client) GetRefund(ctx context.Context, refundID string) (*Refund, error } var refund Refund - statusCode, err := c.httpClient.Do(req, &refund, nil) + statusCode, err := c.httpClient.Do(ctx, req, &refund, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get refund: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/transactions.go b/internal/connectors/plugins/public/mangopay/client/transactions.go index 2d221368..cca16d1d 100644 --- a/internal/connectors/plugins/public/mangopay/client/transactions.go +++ b/internal/connectors/plugins/public/mangopay/client/transactions.go @@ -51,7 +51,7 @@ func (c *client) GetTransactions(ctx context.Context, walletsID string, page, pa req.URL.RawQuery = q.Encode() var payments []Payment - statusCode, err := c.httpClient.Do(req, &payments, nil) + statusCode, err := c.httpClient.Do(ctx, req, &payments, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get transactions: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/transfer.go b/internal/connectors/plugins/public/mangopay/client/transfer.go index 6beaeada..524b3b3d 100644 --- a/internal/connectors/plugins/public/mangopay/client/transfer.go +++ b/internal/connectors/plugins/public/mangopay/client/transfer.go @@ -65,7 +65,7 @@ func (c *client) InitiateWalletTransfer(ctx context.Context, transferRequest *Tr var transferResponse TransferResponse var errRes mangopayError - statusCode, err := c.httpClient.Do(req, &transferResponse, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &transferResponse, &errRes) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to initiate transfer: %w %w", err, errRes.Error()), statusCode) } @@ -86,7 +86,7 @@ func (c *client) GetWalletTransfer(ctx context.Context, transferID string) (Tran } var transfer TransferResponse - statusCode, err := c.httpClient.Do(req, &transfer, nil) + statusCode, err := c.httpClient.Do(ctx, req, &transfer, nil) if err != nil { return transfer, errorsutils.NewErrorWithExitCode( fmt.Errorf("failed to get transfer response: %w", err), diff --git a/internal/connectors/plugins/public/mangopay/client/users.go b/internal/connectors/plugins/public/mangopay/client/users.go index c670b847..8b2df887 100644 --- a/internal/connectors/plugins/public/mangopay/client/users.go +++ b/internal/connectors/plugins/public/mangopay/client/users.go @@ -33,7 +33,7 @@ func (c *client) GetUsers(ctx context.Context, page int, pageSize int) ([]User, req.URL.RawQuery = q.Encode() var users []User - statusCode, err := c.httpClient.Do(req, &users, nil) + statusCode, err := c.httpClient.Do(ctx, req, &users, nil) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get user response: %w", err), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/wallets.go b/internal/connectors/plugins/public/mangopay/client/wallets.go index bd457d3c..bfdece8b 100644 --- a/internal/connectors/plugins/public/mangopay/client/wallets.go +++ b/internal/connectors/plugins/public/mangopay/client/wallets.go @@ -42,7 +42,7 @@ func (c *client) GetWallets(ctx context.Context, userID string, page, pageSize i var wallets []Wallet var errRes mangopayError - statusCode, err := c.httpClient.Do(req, &wallets, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &wallets, &errRes) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get wallets: %w %w", err, errRes.Error()), statusCode) } @@ -63,7 +63,7 @@ func (c *client) GetWallet(ctx context.Context, walletID string) (*Wallet, error var wallet Wallet var errRes mangopayError - statusCode, err := c.httpClient.Do(req, &wallet, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &wallet, &errRes) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to get wallet: %w %w", err, errRes.Error()), statusCode) } diff --git a/internal/connectors/plugins/public/mangopay/client/webhooks.go b/internal/connectors/plugins/public/mangopay/client/webhooks.go index 81768be2..8b618326 100644 --- a/internal/connectors/plugins/public/mangopay/client/webhooks.go +++ b/internal/connectors/plugins/public/mangopay/client/webhooks.go @@ -100,7 +100,7 @@ func (c *client) ListAllHooks(ctx context.Context) ([]*Hook, error) { var hooks []*Hook var errRes mangopayError - statusCode, err := c.httpClient.Do(req, &hooks, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &hooks, &errRes) if err != nil { return nil, errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to list hooks: %w %w", err, errRes.Error()), statusCode) } @@ -134,7 +134,7 @@ func (c *client) CreateHook(ctx context.Context, eventType EventType, URL string req.Header.Set("Content-Type", "application/json") var errRes mangopayError - statusCode, err := c.httpClient.Do(req, nil, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, nil, &errRes) if err != nil { return errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to create hook: %w %w", err, errRes.Error()), statusCode) } @@ -168,7 +168,7 @@ func (c *client) UpdateHook(ctx context.Context, hookID string, URL string) erro req.Header.Set("Content-Type", "application/json") var errRes mangopayError - statusCode, err := c.httpClient.Do(req, nil, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, nil, &errRes) if err != nil { return errorsutils.NewErrorWithExitCode(fmt.Errorf("failed to update hook: %w %w", err, errRes.Error()), statusCode) } diff --git a/internal/connectors/plugins/public/modulr/client/accounts.go b/internal/connectors/plugins/public/modulr/client/accounts.go index d83b37da..ba47e372 100644 --- a/internal/connectors/plugins/public/modulr/client/accounts.go +++ b/internal/connectors/plugins/public/modulr/client/accounts.go @@ -48,7 +48,7 @@ func (c *client) GetAccounts(ctx context.Context, page, pageSize int, fromCreate var res responseWrapper[[]Account] var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get accounts: %w %w", err, errRes.Error()) } @@ -68,7 +68,7 @@ func (c *client) GetAccount(ctx context.Context, accountID string) (*Account, er var res Account var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get account: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/modulr/client/beneficiaries.go b/internal/connectors/plugins/public/modulr/client/beneficiaries.go index c307bf55..1b37ee19 100644 --- a/internal/connectors/plugins/public/modulr/client/beneficiaries.go +++ b/internal/connectors/plugins/public/modulr/client/beneficiaries.go @@ -35,7 +35,7 @@ func (c *client) GetBeneficiaries(ctx context.Context, page, pageSize int, modif var res responseWrapper[[]Beneficiary] var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get beneficiaries: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/modulr/client/client_generated.go b/internal/connectors/plugins/public/modulr/client/client_generated.go index 6037e08f..bec51180 100644 --- a/internal/connectors/plugins/public/modulr/client/client_generated.go +++ b/internal/connectors/plugins/public/modulr/client/client_generated.go @@ -21,6 +21,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/modulr/client/payments.go b/internal/connectors/plugins/public/modulr/client/payments.go index 2933e4b1..3075c77f 100644 --- a/internal/connectors/plugins/public/modulr/client/payments.go +++ b/internal/connectors/plugins/public/modulr/client/payments.go @@ -59,7 +59,7 @@ func (c *client) GetPayments(ctx context.Context, paymentType PaymentType, page, var res responseWrapper[[]Payment] var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get payments: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/modulr/client/payout.go b/internal/connectors/plugins/public/modulr/client/payout.go index 16c38ecc..fd8654f7 100644 --- a/internal/connectors/plugins/public/modulr/client/payout.go +++ b/internal/connectors/plugins/public/modulr/client/payout.go @@ -48,7 +48,7 @@ func (c *client) InitiatePayout(ctx context.Context, payoutRequest *PayoutReques var res PayoutResponse var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to create payout: %w %w", err, errRes.Error()) } @@ -68,7 +68,7 @@ func (c *client) GetPayout(ctx context.Context, payoutID string) (PayoutResponse var res PayoutResponse var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return PayoutResponse{}, fmt.Errorf("failed to get payout: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/modulr/client/transactions.go b/internal/connectors/plugins/public/modulr/client/transactions.go index f5558fa8..546c4e61 100644 --- a/internal/connectors/plugins/public/modulr/client/transactions.go +++ b/internal/connectors/plugins/public/modulr/client/transactions.go @@ -44,7 +44,7 @@ func (c *client) GetTransactions(ctx context.Context, accountID string, page, pa var res responseWrapper[[]Transaction] var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get transactions: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/modulr/client/transfer.go b/internal/connectors/plugins/public/modulr/client/transfer.go index 2a2a6b1f..f08e2c62 100644 --- a/internal/connectors/plugins/public/modulr/client/transfer.go +++ b/internal/connectors/plugins/public/modulr/client/transfer.go @@ -71,7 +71,7 @@ func (c *client) InitiateTransfer(ctx context.Context, transferRequest *Transfer var res TransferResponse var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to initiate transfer: %w %w", err, errRes.Error()) } @@ -91,7 +91,7 @@ func (c *client) GetTransfer(ctx context.Context, transferID string) (TransferRe var res getTransferResponse var errRes modulrError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return TransferResponse{}, fmt.Errorf("failed to get transfer: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/accounts.go b/internal/connectors/plugins/public/moneycorp/client/accounts.go index ff877d32..7d7e39f3 100644 --- a/internal/connectors/plugins/public/moneycorp/client/accounts.go +++ b/internal/connectors/plugins/public/moneycorp/client/accounts.go @@ -19,12 +19,6 @@ type Account struct { } func (c *client) GetAccounts(ctx context.Context, page int, pageSize int) ([]*Account, error) { - // TODO(polo, crimson): metrics - // metrics can also be embedded in wrapper - // f := connectors.ClientMetrics(ctx, "moneycorp", "list_accounts") - // now := time.Now() - // defer f(ctx, now) - endpoint := fmt.Sprintf("%s/accounts", c.endpoint) req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, http.NoBody) if err != nil { @@ -42,7 +36,7 @@ func (c *client) GetAccounts(ctx context.Context, page int, pageSize int) ([]*Ac accounts := accountsResponse{Accounts: make([]*Account, 0)} var errRes moneycorpError - _, err = c.httpClient.Do(req, &accounts, &errRes) + _, err = c.httpClient.Do(ctx, req, &accounts, &errRes) if err != nil { return nil, fmt.Errorf("failed to get accounts: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/balances.go b/internal/connectors/plugins/public/moneycorp/client/balances.go index 4b82f90b..2664ca14 100644 --- a/internal/connectors/plugins/public/moneycorp/client/balances.go +++ b/internal/connectors/plugins/public/moneycorp/client/balances.go @@ -26,11 +26,6 @@ type Attributes struct { } func (c *client) GetAccountBalances(ctx context.Context, accountID string) ([]*Balance, error) { - // TODO(polo): metrics - // f := connectors.ClientMetrics(ctx, "moneycorp", "list_account_balances") - // now := time.Now() - // defer f(ctx, now) - endpoint := fmt.Sprintf("%s/accounts/%s/balances", c.endpoint, accountID) req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, http.NoBody) if err != nil { @@ -41,7 +36,7 @@ func (c *client) GetAccountBalances(ctx context.Context, accountID string) ([]*B balances := balancesResponse{Balances: make([]*Balance, 0)} var errRes moneycorpError - _, err = c.httpClient.Do(req, &balances, &errRes) + _, err = c.httpClient.Do(ctx, req, &balances, &errRes) if err != nil { return nil, fmt.Errorf("failed to get account balances: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/client.go b/internal/connectors/plugins/public/moneycorp/client/client.go index bf5850d4..f07bc91d 100644 --- a/internal/connectors/plugins/public/moneycorp/client/client.go +++ b/internal/connectors/plugins/public/moneycorp/client/client.go @@ -8,6 +8,7 @@ import ( "github.com/formancehq/payments/internal/connectors/httpwrapper" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + "go.opentelemetry.io/otel/attribute" ) //go:generate mockgen -source client.go -destination client_generated.go -package client . Client @@ -27,7 +28,11 @@ type client struct { } func New(clientID, apiKey, endpoint string) (*client, error) { + metricsAttributes := []attribute.KeyValue{ + attribute.String("psp", "moneycorp"), + } config := &httpwrapper.Config{ + CommonMetricsAttributes: metricsAttributes, Transport: &apiTransport{ clientID: clientID, apiKey: apiKey, diff --git a/internal/connectors/plugins/public/moneycorp/client/client_generated.go b/internal/connectors/plugins/public/moneycorp/client/client_generated.go index 47f62c21..225b486b 100644 --- a/internal/connectors/plugins/public/moneycorp/client/client_generated.go +++ b/internal/connectors/plugins/public/moneycorp/client/client_generated.go @@ -21,6 +21,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/moneycorp/client/payouts.go b/internal/connectors/plugins/public/moneycorp/client/payouts.go index 0ddaa46b..d07efd35 100644 --- a/internal/connectors/plugins/public/moneycorp/client/payouts.go +++ b/internal/connectors/plugins/public/moneycorp/client/payouts.go @@ -82,7 +82,7 @@ func (c *client) InitiatePayout(ctx context.Context, pr *PayoutRequest) (*Payout var res payoutResponse var errRes moneycorpError - _, err = c.httpClient.Do(req, &res, &errRes) + _, err = c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to initiate transfer: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/recipients.go b/internal/connectors/plugins/public/moneycorp/client/recipients.go index 53ff780d..a87ed856 100644 --- a/internal/connectors/plugins/public/moneycorp/client/recipients.go +++ b/internal/connectors/plugins/public/moneycorp/client/recipients.go @@ -44,7 +44,7 @@ func (c *client) GetRecipients(ctx context.Context, accountID string, page int, recipients := recipientsResponse{Recipients: make([]*Recipient, 0)} var errRes moneycorpError - _, err = c.httpClient.Do(req, &recipients, &errRes) + _, err = c.httpClient.Do(ctx, req, &recipients, &errRes) if err != nil { return nil, fmt.Errorf("failed to get recipients: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/transactions.go b/internal/connectors/plugins/public/moneycorp/client/transactions.go index d70cdbe8..b07dbe9e 100644 --- a/internal/connectors/plugins/public/moneycorp/client/transactions.go +++ b/internal/connectors/plugins/public/moneycorp/client/transactions.go @@ -98,7 +98,7 @@ func (c *client) GetTransactions(ctx context.Context, accountID string, page, pa transactions := transactionsResponse{Transactions: make([]*Transaction, 0)} var errRes moneycorpError - _, err = c.httpClient.Do(req, &transactions, &errRes) + _, err = c.httpClient.Do(ctx, req, &transactions, &errRes) if err != nil { return nil, fmt.Errorf("failed to get transactions: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/moneycorp/client/transfers.go b/internal/connectors/plugins/public/moneycorp/client/transfers.go index 54765c34..d69cb0d0 100644 --- a/internal/connectors/plugins/public/moneycorp/client/transfers.go +++ b/internal/connectors/plugins/public/moneycorp/client/transfers.go @@ -73,7 +73,7 @@ func (c *client) InitiateTransfer(ctx context.Context, tr *TransferRequest) (*Tr var transferResponse transferResponse var errRes moneycorpError - _, err = c.httpClient.Do(req, &transferResponse, &errRes) + _, err = c.httpClient.Do(ctx, req, &transferResponse, &errRes) if err != nil { return nil, fmt.Errorf("failed to initiate transfer: %w %w", err, errRes.Error()) } @@ -96,7 +96,7 @@ func (c *client) GetTransfer(ctx context.Context, accountID string, transferID s var transferResponse transferResponse var errRes moneycorpError - _, err = c.httpClient.Do(req, &transferResponse, &errRes) + _, err = c.httpClient.Do(ctx, req, &transferResponse, &errRes) if err != nil { return nil, fmt.Errorf("failed to get transfer: %w %w", err, errRes.Error()) } diff --git a/internal/connectors/plugins/public/stripe/client/client_generated.go b/internal/connectors/plugins/public/stripe/client/client_generated.go index f57082a6..702ebdda 100644 --- a/internal/connectors/plugins/public/stripe/client/client_generated.go +++ b/internal/connectors/plugins/public/stripe/client/client_generated.go @@ -21,6 +21,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/wise/client/balances.go b/internal/connectors/plugins/public/wise/client/balances.go index 6c12bb8a..320caf7d 100644 --- a/internal/connectors/plugins/public/wise/client/balances.go +++ b/internal/connectors/plugins/public/wise/client/balances.go @@ -50,7 +50,7 @@ func (c *client) GetBalances(ctx context.Context, profileID uint64) ([]Balance, var balances []Balance var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &balances, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &balances, &errRes) if err != nil { return balances, fmt.Errorf("failed to get balances: %w %w", err, errRes.Error(statusCode).Error()) } @@ -71,7 +71,7 @@ func (c *client) GetBalance(ctx context.Context, profileID uint64, balanceID uin var balance Balance var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &balance, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &balance, &errRes) if err != nil { return &balance, fmt.Errorf("failed to get balance: %w %w", err, errRes.Error(statusCode).Error()) } diff --git a/internal/connectors/plugins/public/wise/client/client_generated.go b/internal/connectors/plugins/public/wise/client/client_generated.go index 1a00738f..6fe8d932 100644 --- a/internal/connectors/plugins/public/wise/client/client_generated.go +++ b/internal/connectors/plugins/public/wise/client/client_generated.go @@ -21,6 +21,7 @@ import ( type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder + isgomock struct{} } // MockClientMockRecorder is the mock recorder for MockClient. diff --git a/internal/connectors/plugins/public/wise/client/payouts.go b/internal/connectors/plugins/public/wise/client/payouts.go index 1272e6b1..285f567e 100644 --- a/internal/connectors/plugins/public/wise/client/payouts.go +++ b/internal/connectors/plugins/public/wise/client/payouts.go @@ -73,7 +73,7 @@ func (c *client) GetPayout(ctx context.Context, payoutID string) (*Payout, error var payout Payout var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &payout, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &payout, &errRes) if err != nil { return &payout, fmt.Errorf("failed to get payout: %w %w", err, errRes.Error(statusCode).Error()) } @@ -103,7 +103,7 @@ func (c *client) CreatePayout(ctx context.Context, quote Quote, targetAccount ui var payout Payout var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &payout, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &payout, &errRes) if err != nil { return &payout, fmt.Errorf("failed to make payout: %w %w", err, errRes.Error(statusCode).Error()) } diff --git a/internal/connectors/plugins/public/wise/client/profiles.go b/internal/connectors/plugins/public/wise/client/profiles.go index 122277b2..e723b279 100644 --- a/internal/connectors/plugins/public/wise/client/profiles.go +++ b/internal/connectors/plugins/public/wise/client/profiles.go @@ -24,7 +24,7 @@ func (c *client) GetProfiles(ctx context.Context) ([]Profile, error) { } var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &profiles, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &profiles, &errRes) if err != nil { return profiles, fmt.Errorf("failed to make profiles: %w %w", err, errRes.Error(statusCode).Error()) } diff --git a/internal/connectors/plugins/public/wise/client/quotes.go b/internal/connectors/plugins/public/wise/client/quotes.go index e9e77091..d8c46a4d 100644 --- a/internal/connectors/plugins/public/wise/client/quotes.go +++ b/internal/connectors/plugins/public/wise/client/quotes.go @@ -43,7 +43,7 @@ func (c *client) CreateQuote(ctx context.Context, profileID, currency string, am req.Header.Set("Content-Type", "application/json") var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, "e, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, "e, &errRes) if err != nil { return quote, fmt.Errorf("failed to get response from quote: %w %w", err, errRes.Error(statusCode).Error()) } diff --git a/internal/connectors/plugins/public/wise/client/recipient_accounts.go b/internal/connectors/plugins/public/wise/client/recipient_accounts.go index e0c9484a..1f6c3501 100644 --- a/internal/connectors/plugins/public/wise/client/recipient_accounts.go +++ b/internal/connectors/plugins/public/wise/client/recipient_accounts.go @@ -47,7 +47,7 @@ func (c *client) GetRecipientAccounts(ctx context.Context, profileID uint64, pag var accounts RecipientAccountsResponse var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &accounts, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &accounts, &errRes) if err != nil { return nil, fmt.Errorf("failed to get recipient accounts: %w %w", err, errRes.Error(statusCode).Error()) } @@ -74,7 +74,7 @@ func (c *client) GetRecipientAccount(ctx context.Context, accountID uint64) (*Re var res RecipientAccount var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &res, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { e := errRes.Error(statusCode) if e.Code == "RECIPIENT_MISSING" { diff --git a/internal/connectors/plugins/public/wise/client/transfers.go b/internal/connectors/plugins/public/wise/client/transfers.go index 6dd46d45..ef31a8f3 100644 --- a/internal/connectors/plugins/public/wise/client/transfers.go +++ b/internal/connectors/plugins/public/wise/client/transfers.go @@ -79,7 +79,7 @@ func (c *client) GetTransfers(ctx context.Context, profileID uint64, offset int, var transfers []Transfer var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &transfers, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &transfers, &errRes) if err != nil { return nil, fmt.Errorf("failed to get transfers: %w %w", err, errRes.Error(statusCode).Error()) } @@ -170,7 +170,7 @@ func (c *client) GetTransfer(ctx context.Context, transferID string) (*Transfer, var transfer Transfer var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &transfer, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &transfer, &errRes) if err != nil { return nil, fmt.Errorf("failed to get transfer: %w %w", err, errRes.Error(statusCode).Error()) } @@ -201,7 +201,7 @@ func (c *client) CreateTransfer(ctx context.Context, quote Quote, targetAccount var transfer Transfer var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &transfer, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &transfer, &errRes) if err != nil { return nil, fmt.Errorf("failed to create transfer: %w %w", err, errRes.Error(statusCode).Error()) } diff --git a/internal/connectors/plugins/public/wise/client/webhooks.go b/internal/connectors/plugins/public/wise/client/webhooks.go index 5e6049be..18ac063e 100644 --- a/internal/connectors/plugins/public/wise/client/webhooks.go +++ b/internal/connectors/plugins/public/wise/client/webhooks.go @@ -62,7 +62,7 @@ func (c *client) CreateWebhook(ctx context.Context, profileID uint64, name, trig var res WebhookSubscriptionResponse var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &res, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to create subscription: %w %w", err, errRes.Error(statusCode).Error()) } @@ -78,7 +78,7 @@ func (c *client) ListWebhooksSubscription(ctx context.Context, profileID uint64) var res []WebhookSubscriptionResponse var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, &res, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, &res, &errRes) if err != nil { return nil, fmt.Errorf("failed to get subscription: %w %w", err, errRes.Error(statusCode).Error()) } @@ -93,7 +93,7 @@ func (c *client) DeleteWebhooks(ctx context.Context, profileID uint64, subscript } var errRes wiseErrors - statusCode, err := c.httpClient.Do(req, nil, &errRes) + statusCode, err := c.httpClient.Do(ctx, req, nil, &errRes) if err != nil { return fmt.Errorf("failed to delete webhooks: %w %w", err, errRes.Error(statusCode).Error()) }