class Fintual::Client
Client
component to make the requests and get data
Public Class Methods
new(email, password)
click to toggle source
# File lib/fintual/client.rb, line 15 def initialize(email, password) @email = email @password = password @user_agent = "fintual-ruby/#{Fintual::VERSION}" @headers = { 'Content-Type': 'application/json', 'User-Agent': @user_agent } @default_params = {} @default_params = { user_email: @email, user_token: get_token } end
Public Instance Methods
build_goal(**kwargs)
click to toggle source
# File lib/fintual/client.rb, line 58 def build_goal(**kwargs) Fintual::Goal.new(**kwargs) end
delete()
click to toggle source
# File lib/fintual/client.rb, line 34 def delete request('delete') end
get()
click to toggle source
# File lib/fintual/client.rb, line 30 def get request('get') end
goals()
click to toggle source
# File lib/fintual/client.rb, line 53 def goals result = get.call('goals') result.map { |data| build_goal(data[:attributes]) } end
request(method)
click to toggle source
# File lib/fintual/client.rb, line 38 def request(method) proc do |resource, **kwargs| parameters = params(method, **kwargs) response = make_request(method, resource, parameters) content = JSON.parse(response.body, symbolize_names: true) data = content[:data] error = content[:error] if content[:status] == "error" raise_custom_error(content) end data end end
to_s()
click to toggle source
# File lib/fintual/client.rb, line 62 def to_s visible_chars = 4 hidden_part = '*' * (@api_key.size - visible_chars) visible_key = @api_key.slice(0, visible_chars) "Client(🔑=#{hidden_part + visible_key}" end
Private Instance Methods
client()
click to toggle source
# File lib/fintual/client.rb, line 71 def client @client ||= Net::HTTP end
get_token()
click to toggle source
# File lib/fintual/client.rb, line 98 def get_token payload = { user: {email: @email, password: @password} } request('post').call('access_tokens', payload)[:attributes][:token] end
make_request(method, resource, parameters)
click to toggle source
# File lib/fintual/client.rb, line 75 def make_request(method, resource, parameters) uri = URI.parse("#{Fintual::Constants::SCHEME}#{Fintual::Constants::BASE_URL}#{resource}") https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true case method.downcase when 'get' req = Net::HTTP::Get.new(uri.path, @headers) when 'post' req = Net::HTTP::Post.new(uri.path, @headers) end req.body = parameters.to_json https.request(req) end
params(method, **kwargs)
click to toggle source
# File lib/fintual/client.rb, line 89 def params(method, **kwargs) { **@default_params, **kwargs } end
raise_custom_error(error)
click to toggle source
# File lib/fintual/client.rb, line 94 def raise_custom_error(error) raise Fintual::Errors::FintualError.new(error[:message]) end