mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-25 08:09:38 +02:00
Use faraday retry, move retry logic to concrete provider level (#2042)
This commit is contained in:
parent
0a17b84566
commit
939244bd3e
5 changed files with 50 additions and 90 deletions
|
@ -1,6 +1,4 @@
|
|||
class Provider
|
||||
include Retryable
|
||||
|
||||
Response = Data.define(:success?, :data, :error)
|
||||
|
||||
class Error < StandardError
|
||||
|
@ -23,17 +21,8 @@ class Provider
|
|||
PaginatedData = Data.define(:paginated, :first_page, :total_pages)
|
||||
UsageData = Data.define(:used, :limit, :utilization, :plan)
|
||||
|
||||
# Subclasses can specify errors that can be retried
|
||||
def retryable_errors
|
||||
[]
|
||||
end
|
||||
|
||||
def with_provider_response(retries: default_retries, error_transformer: nil, &block)
|
||||
data = if retries > 0
|
||||
retrying(retryable_errors, max_retries: retries) { yield }
|
||||
else
|
||||
yield
|
||||
end
|
||||
def with_provider_response(error_transformer: nil, &block)
|
||||
data = yield
|
||||
|
||||
Response.new(
|
||||
success?: true,
|
||||
|
@ -67,9 +56,4 @@ class Provider
|
|||
self.class::Error.new(error.message)
|
||||
end
|
||||
end
|
||||
|
||||
# Override to set class-level number of retries for methods using `with_provider_response`
|
||||
def default_retries
|
||||
0
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue