diff --git a/lib/beyond_api.rb b/lib/beyond_api.rb index 7a84b62..1795f78 100644 --- a/lib/beyond_api.rb +++ b/lib/beyond_api.rb @@ -38,19 +38,16 @@ def self.setup end class Configuration - attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links, - :remove_response_key_underscores, :object_struct_responses, :raise_error_requests, - :log_headers, :log_bodies, :log_level, :all_pagination_size, :retry_options + attr_accessor :client_id, :client_secret, + :open_timeout, :timeout, + :log_headers, :log_bodies, :log_level, + :all_pagination_size, :retry_options def initialize @client_id = nil @client_secret = nil @open_timeout = 2 @timeout = 5 - @remove_response_links = false - @remove_response_key_underscores = false - @object_struct_responses = false - @raise_error_requests = false @log_level = :info @log_headers = false @@ -59,12 +56,12 @@ def initialize @all_pagination_size = 200 @retry_options = { - max: 5, + max: 3, interval: 0.05, interval_randomness: 0.5, backoff_factor: 2, retry_statuses: [409], - # exceptions: [Faraday::TimeoutError, Faraday::ConnectionFailed] + exceptions: [Faraday::TimeoutError, Faraday::ConnectionFailed] } end end diff --git a/lib/beyond_api/response.rb b/lib/beyond_api/response.rb index 2a7eacf..45e9985 100644 --- a/lib/beyond_api/response.rb +++ b/lib/beyond_api/response.rb @@ -21,28 +21,35 @@ def handle private - def sanitize_key(key) - key.chars.first == "_" ? key[1..-1] : key - end - def sanitize_response(hash) return {} if hash.blank? - {}.tap do |h| + {}.tap do |response_hash| hash.each do |key, value| - next if key == "_links" && BeyondApi.configuration.remove_response_links + key = remove_initial_underscore(key) + key = symbolize_key(key) - key = sanitize_key(key) if BeyondApi.configuration.remove_response_key_underscores - h[key.underscore.to_sym] = transform(value) + response_hash[key] = sanitize_value(value) end end end - def transform(thing) - case thing - when Hash then sanitize_response(thing) - when Array then thing.map { |v| transform(v) } - else; thing + def remove_initial_underscore(key) + key.chars.first == "_" ? key[1..-1] : key + end + + def symbolize_key(key) + key.underscore.to_sym + end + + def sanitize_value(value) + case value + when Hash + sanitize_response(value) + when Array + value.map { |v| sanitize_value(v) } + else + value end end diff --git a/lib/generators/templates/beyond_api_initializer.rb b/lib/generators/templates/beyond_api_initializer.rb index 9b74b94..7341fb4 100644 --- a/lib/generators/templates/beyond_api_initializer.rb +++ b/lib/generators/templates/beyond_api_initializer.rb @@ -30,27 +30,6 @@ # # config.log_bodies = false - # ==> Response configuration - # Configure if :_links should be removed from response. Default is false and - # :_links are gonna be part of the response. - # config.remove_response_links = false - - # Configure if first character underescores should be removed on response hash - # keys. For example, if set to true, :_id will become :id. Default is false. - # config.remove_response_key_underscores = false - - # Configure if responses should be transformed to ObjectStructs. If set to - # true, it gives you the posibility to access response data on a doted way. - # With OpenStructs => response.embeded.products.first.id - # Without OpenStructs => response["embeded"]["products"].first["id"] - # config.object_struct_responses = false - - # Configure if the gem should raise on error requests. Setting it to true is - # useful for working with exceptions. Setting it to false will return a - # BeyondApi::Error object with detailed information of the error. - # Default is false. - # config.raise_error_requests = false - # ==> Retry configuration # Configure the retry options for requests. Default is: # config.retry_options = {