class FrilansFinansAPI::Request
Constants
- GRANT_TYPE
- HEADERS
- USER_AGENT
Attributes
access_token[R]
base_uri[R]
credentials[R]
Public Class Methods
new(base_uri: nil, client_id: nil, client_secret: nil)
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 20 def initialize(base_uri: nil, client_id: nil, client_secret: nil) @base_uri = base_uri || FrilansFinansAPI.config.base_uri @credentials = { grant_type: GRANT_TYPE, client_id: client_id || FrilansFinansAPI.config.client_id, client_secret: client_secret || FrilansFinansAPI.config.client_secret } @access_token = nil end
Public Instance Methods
_get(uri:, query: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 48 def _get(uri:, query: {}) opts = build_get_opts(query: query) response = HTTParty.get("#{base_uri}#{uri}", opts) log_response(:get, uri: uri, params: opts, response: response) response end
_patch(uri:, query: {}, body: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 62 def _patch(uri:, query: {}, body: {}) opts = build_post_opts(query: query, body: body) response = HTTParty.patch("#{base_uri}#{uri}", opts) log_response(:patch, uri: uri, params: opts, response: response) response end
_post(uri:, query: {}, body: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 55 def _post(uri:, query: {}, body: {}) opts = build_post_opts(query: query, body: body) response = HTTParty.post("#{base_uri}#{uri}", opts) log_response(:post, uri: uri, params: opts, response: response) response end
get(uri:, query: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 30 def get(uri:, query: {}) authorized_request do _get(uri: uri, query: query) end end
patch(uri:, query: {}, body: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 42 def patch(uri:, query: {}, body: {}) authorized_request do _patch(uri: uri, query: query, body: body.to_json) end end
post(uri:, query: {}, body: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 36 def post(uri:, query: {}, body: {}) authorized_request do _post(uri: uri, query: query, body: body.to_json) end end
Private Instance Methods
auth_headers()
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 100 def auth_headers { 'Authorization' => "Bearer #{access_token}" } end
build_get_opts(query: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 71 def build_get_opts(query: {}) { query: query }.merge(headers: headers) end
build_post_opts(query: {}, body: {})
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 75 def build_post_opts(query: {}, body: {}) { query: query, body: body }.merge(headers: headers) end
extract_access_token(response)
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 113 def extract_access_token(response) parsed = response.parsed_response # In tests HTTParty and Webmock aren't friends, causing HTTParty to return a string # from #parsed_response instead of a Hash parsed = JSON.parse(parsed) if parsed.is_a?(String) parsed['access_token'] end
fetch_access_token()
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 104 def fetch_access_token uri = "#{base_uri}/auth/accesstoken" response = HTTParty.post(uri, body: credentials, headers: USER_AGENT) log_response(:post, uri: uri, params: {}, response: response) @access_token = extract_access_token(response) response end
headers()
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 82 def headers HEADERS.merge(auth_headers).dup end
log_response(method, uri:, params:, response:)
click to toggle source
# File lib/frilans_finans_api/client/request.rb, line 123 def log_response(method, uri:, params:, response:) log_id = "[#{self.class.name}]" verb = method.to_s.upcase body = response.body json_params = params.to_json status = response.code log_body = [ log_id, verb, "URI: #{uri}", "PARAMS: #{json_params}", "STATUS: #{status}", "BODY: #{body}" ].join(' ') FrilansFinansAPI.config.event_logger.request_event(params: json_params, status: status, verb: verb, uri: uri, body: body) FrilansFinansAPI.config.logger.info log_body end