class Dadatas::ApiCall
Call API DADATA
Attributes
config[R]
params[R]
url[R]
Public Class Methods
new(url, config, params)
click to toggle source
# File lib/dadatas/api_call.rb, line 11 def initialize(url, config, params) @url = url @config = config @params = params end
Public Instance Methods
call()
click to toggle source
# File lib/dadatas/api_call.rb, line 17 def call response = perform_request(url, params) return response_handler(response) if response.status.eql?(200) error_response(response, response.body) end
error_response(response, response_body)
click to toggle source
# File lib/dadatas/api_call.rb, line 35 def error_response(response, response_body) [false, { code: response.status, message: response_body }] end
header()
click to toggle source
# File lib/dadatas/api_call.rb, line 48 def header { 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => "Token #{@config[:api_key]}", 'X-Secret' => @config[:secret_key].to_s } end
perform_request(url, params)
click to toggle source
# File lib/dadatas/api_call.rb, line 57 def perform_request(url, params) Faraday.post(url, params.to_json, header) rescue StandardError => e e end
response_handler(response)
click to toggle source
# File lib/dadatas/api_call.rb, line 25 def response_handler(response) response_body = JSON.parse(response.body, symbolize_names: true) return success(response_body) if response_body.is_a?(Array) return success(response_body[:suggestions]) if response_body.key?(:suggestions) error_response(response, response_body) end
success(response)
click to toggle source
# File lib/dadatas/api_call.rb, line 39 def success(response) new_response = response.map do |result| result[:data].merge!(req_value: result[:value]) if result.key?(:data) result end [response.any?, new_response] end