-
Notifications
You must be signed in to change notification settings - Fork 7
fix(atlar): fix payout creation and polling statuses #305
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThe pull request introduces modifications across several files in the Atlar client package, focusing primarily on enhancing error handling mechanisms. The changes involve updating error wrapping strategies in various methods of the client struct, introducing more specific error types for different scenarios such as not found, bad request, and other error conditions. The modifications aim to provide more granular and precise error reporting across different client methods, with a particular emphasis on improving the classification and handling of SDK-related errors. Changes
Sequence DiagramsequenceDiagram
participant Client
participant SDK
participant ErrorHandler
Client->>SDK: Make API Call
SDK-->>Client: Return Response/Error
Client->>ErrorHandler: Wrap Error
ErrorHandler-->>Client: Classify and Return Error
8000
div>
Possibly related PRs
Suggested Labels
Suggested Reviewers
Poem
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
03df969
to
fb0dad1
Compare
fb0dad1
to
5864c6b
Compare
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
internal/connectors/plugins/public/atlar/client/client.go (1)
Line range hint
76-113
: LGTM! Robust error handling implementation.The enhanced
wrapSDKErr
function now:
- Properly handles both runtime.APIError and custom error types
- Uses type assertions safely with
errors.As
- Maintains consistent error wrapping behavior
However, consider adding error message customization for better debugging:
- return fmt.Errorf("atlar error: %w: %w", err, httpwrapper.ErrStatusCodeTooManyRequests) + return fmt.Errorf("atlar rate limit exceeded (code %d): %w: %w", code, err, httpwrapper.ErrStatusCodeTooManyRequests) - return fmt.Errorf("atlar error: %w: %w", err, httpwrapper.ErrStatusCodeClientError) + return fmt.Errorf("atlar client error (code %d): %w: %w", code, err, httpwrapper.ErrStatusCodeClientError) - return fmt.Errorf("atlar error: %w: %w", err, httpwrapper.ErrStatusCodeServerError) + return fmt.Errorf("atlar server error (code %d): %w: %w", code, err, httpwrapper.ErrStatusCodeServerError)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
internal/connectors/engine/workflow/create_payout.go
(1 hunks)internal/connectors/engine/workflow/create_payout_test.go
(1 hunks)internal/connectors/plugins/public/atlar/client/accounts.go
(2 hunks)internal/connectors/plugins/public/atlar/client/client.go
(2 hunks)internal/connectors/plugins/public/atlar/client/counter_parties.go
(2 hunks)internal/connectors/plugins/public/atlar/client/external_accounts.go
(2 hunks)internal/connectors/plugins/public/atlar/client/third_parties.go
(1 hunks)internal/connectors/plugins/public/atlar/client/transactions.go
(2 hunks)internal/connectors/plugins/public/atlar/client/transfers.go
(2 hunks)
🔇 Additional comments (12)
internal/connectors/engine/workflow/create_payout.go (1)
132-138
: LGTM! Workflow name and arguments updated correctly.The changes properly align the workflow name and arguments with the payout-specific functionality:
- Workflow renamed from
RunPollTransfer
toRunPollPayout
- Arguments updated to use
PayoutID
instead ofTransferID
Let's verify that all references to the old workflow name have been updated:
✅ Verification successful
Verified: Parallel workflow implementations are correct
The codebase maintains separate, well-structured implementations for transfer and payout workflows:
RunPollPayout
is properly defined and registered for payout operationsRunPollTransfer
references are part of the separate transfer functionality- No mixing or inconsistencies found between the two workflows
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for any remaining references to RunPollTransfer rg "RunPollTransfer" # Search for consistency in PayoutID usage rg "TransferID.*RunPollPayout|RunPollPayout.*TransferID"Length of output: 1677
Script:
#!/bin/bash # Search for RunPollPayout definition and usage rg "RunPollPayout" -A 2 # Verify workflow registration ast-grep --pattern 'const RunPollPayout = $_'Length of output: 5657
internal/connectors/engine/workflow/create_payout_test.go (1)
109-109
: LGTM! Test assertion updated to match implementation.The test correctly verifies that the workflow name has been updated to
RunPollPayout
.internal/connectors/plugins/public/atlar/client/third_parties.go (1)
18-18
: LGTM! Consistent error handling improvementThe addition of specific NotFound error type aligns with the systematic improvement in error handling across the client package.
internal/connectors/plugins/public/atlar/client/accounts.go (1)
18-18
: LGTM! Consistent error handling patternThe changes follow the established pattern across the client package:
- GetV1AccountsID: Uses specific NotFound error type for precise error handling
- GetV1Accounts: Uses nil for general error handling in list operations
Also applies to: 30-30
internal/connectors/plugins/public/atlar/client/transactions.go (1)
19-19
: LGTM! Maintains consistent error handlingThe changes maintain the established error handling pattern:
- GetV1TransactionsID: Uses specific NotFound error type
- GetV1Transactions: Uses nil for list operations
Also applies to: 30-30
internal/connectors/plugins/public/atlar/client/external_accounts.go (1)
18-18
: LGTM! Completes the consistent error handling improvementsThese changes complete the systematic improvement in error handling across the client package:
- GetV1ExternalAccountsID: Uses specific NotFound error type
- GetV1ExternalAccounts: Uses nil for list operations
The entire PR demonstrates a well-thought-out approach to improving error handling granularity across all client methods.
Also applies to: 30-30
internal/connectors/plugins/public/atlar/client/transfers.go (2)
19-19
: LGTM! Enhanced error handling for credit transfers.The addition of specific error type
PostV1CreditTransfersBadRequest
improves error classification for failed payout creations.
30-30
: LGTM! Enhanced error handling for transfer status polling.The addition of specific error type
GetV1CreditTransfersGetByExternalIDExternalIDNotFound
improves error classification when polling transfer statuses.internal/connectors/plugins/public/atlar/client/client.go (1)
70-72
: LGTM! Well-designed interface for error code handling.The
ErrorCodeReader
interface provides a clean abstraction for error code retrieval.internal/connectors/plugins/public/atlar/client/counter_parties.go (3)
21-21
: LGTM! Enhanced error handling for counterparty retrieval.The addition of specific error type
GetV1CounterpartiesIDNotFound
improves error classification.
64-64
: LGTM! Enhanced error handling for counterparty creation.The addition of specific error type
PostV1CounterpartiesBadRequest
improves error classification for failed counterparty creations.
Line range hint
25-25
: Address the TODO comment regarding IBAN duplication.The comment indicates a limitation in the Atlar API v1 regarding IBAN filtering. This could lead to duplicate accounts.
Let's check if this is still an issue with the current API version:
No description provided.