Class: Fintoc::BaseClient
- Inherits:
-
Object
- Object
- Fintoc::BaseClient
- Includes:
- Utils
- Defined in:
- lib/fintoc/base_client.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#default_params ⇒ Object
Returns the value of attribute default_params.
Instance Method Summary collapse
- #delete(version: :v1) ⇒ Object
- #fetch_next ⇒ Object
- #get(version: :v1) ⇒ Object
-
#initialize(api_key, jws_private_key: nil) ⇒ BaseClient
constructor
A new instance of BaseClient.
- #patch(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
- #post(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
- #put(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
- #request(method, version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
- #to_s ⇒ Object
Methods included from Utils
#flatten, #pick, #pluralize, #snake_to_pascal
Constructor Details
#initialize(api_key, jws_private_key: nil) ⇒ BaseClient
Returns a new instance of BaseClient.
15 16 17 18 19 20 21 22 23 |
# File 'lib/fintoc/base_client.rb', line 15 def initialize(api_key, jws_private_key: nil) @api_key = api_key @user_agent = "fintoc-ruby/#{Fintoc::VERSION}" @headers = { Authorization: "Bearer #{@api_key}", 'User-Agent': @user_agent } @link_headers = nil @link_header_pattern = '<(?<url>.*)>;\s*rel="(?<rel>.*)"' @default_params = {} @jws = jws_private_key ? Fintoc::JWS.new(jws_private_key) : nil end |
Instance Attribute Details
#default_params ⇒ Object
Returns the value of attribute default_params.
13 14 15 |
# File 'lib/fintoc/base_client.rb', line 13 def default_params @default_params end |
Instance Method Details
#delete(version: :v1) ⇒ Object
29 30 31 |
# File 'lib/fintoc/base_client.rb', line 29 def delete(version: :v1) request('delete', version:) end |
#fetch_next ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/fintoc/base_client.rb', line 60 def fetch_next next_ = link_headers['next'] Enumerator.new do |yielder| while next_ yielder << get.call(next_) next_ = link_headers['next'] end end end |
#get(version: :v1) ⇒ Object
25 26 27 |
# File 'lib/fintoc/base_client.rb', line 25 def get(version: :v1) request('get', version:) end |
#patch(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
37 38 39 |
# File 'lib/fintoc/base_client.rb', line 37 def patch(version: :v1, use_jws: false, idempotency_key: nil) request('patch', version:, use_jws:, idempotency_key:) end |
#post(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
33 34 35 |
# File 'lib/fintoc/base_client.rb', line 33 def post(version: :v1, use_jws: false, idempotency_key: nil) request('post', version:, use_jws:, idempotency_key:) end |
#put(version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
41 42 43 |
# File 'lib/fintoc/base_client.rb', line 41 def put(version: :v1, use_jws: false, idempotency_key: nil) request('put', version:, use_jws:, idempotency_key:) end |
#request(method, version: :v1, use_jws: false, idempotency_key: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/fintoc/base_client.rb', line 45 def request(method, version: :v1, use_jws: false, idempotency_key: nil) proc do |resource, form: nil, **kwargs| parameters = form ? { form: build_form(form) } : params(method, **kwargs) response = make_request(method, resource, parameters, version:, use_jws:, idempotency_key:) content = JSON.parse(response.body, symbolize_names: true) if response.status.client_error? || response.status.server_error? raise_custom_error(content[:error]) end @link_headers = response.headers.get('link') content end end |
#to_s ⇒ Object
70 71 72 73 74 75 |
# File 'lib/fintoc/base_client.rb', line 70 def to_s visible_chars = 8 visible_key = @api_key.slice(0, visible_chars) hidden_part = '*' * (@api_key.size - visible_chars) "#{self.class.name}(🔑=#{visible_key + hidden_part})" end |