class APIHandler
Constants
- BASE_URL_MISSING_MSG
Attributes
api_base_url[RW]
handler[R]
name[R]
version[R]
Public Class Methods
new(api_name, api_version, api_handler)
click to toggle source
# File lib/qaa/api_handler.rb, line 16 def initialize(api_name, api_version, api_handler) @name = api_name @version = api_version @handler = api_handler end
Public Instance Methods
api_delete(params)
click to toggle source
# File lib/qaa/api_handler.rb, line 42 def api_delete(params) uri = queried_string_uri(api_handler_url, params) request = Net::HTTP::Delete.new(uri) send_request(uri, request) end
api_get(params)
click to toggle source
# File lib/qaa/api_handler.rb, line 36 def api_get(params) uri = queried_string_uri(api_handler_url, params) request = Net::HTTP::Get.new(uri) send_request(uri, request) end
api_post(params)
click to toggle source
# File lib/qaa/api_handler.rb, line 22 def api_post(params) uri = URI.parse(api_handler_url) request = Net::HTTP::Post.new(uri) request.body = params.to_json send_request(uri, request) end
api_put(params)
click to toggle source
# File lib/qaa/api_handler.rb, line 29 def api_put(params) uri = URI.parse(api_handler_url) request = Net::HTTP::Put.new(uri) request.body = params.to_json send_request(uri, request) end
base_url()
click to toggle source
# File lib/qaa/api_handler.rb, line 11 def base_url raise BASE_URL_MISSING_MSG unless self.class.api_base_url self.class.api_base_url end
Private Instance Methods
api_handler_url()
click to toggle source
# File lib/qaa/api_handler.rb, line 80 def api_handler_url nodes_url = "#{base_url}/#{name}/nodes" nodes = api_nodes(nodes_url) url = api_url(nodes) "#{url}/#{version}/#{handler}" end
api_nodes(nodes_url)
click to toggle source
# File lib/qaa/api_handler.rb, line 67 def api_nodes(nodes_url) nodes_uri = URI.parse(nodes_url) response = send_request(nodes_uri, Net::HTTP::Get.new(nodes_uri)) nodes_list = JSON.parse(response.body, symbolize_names: true)[:node][:nodes] nodes_list.reject { |node| node[:value].empty? } end
api_url(nodes)
click to toggle source
# File lib/qaa/api_handler.rb, line 74 def api_url(nodes) api_urls = nodes.map { |node| node[:value] } api_urls.each { |url| url.sub!('-pub', '') } api_urls.sample end
queried_string_uri(handler_url, params)
click to toggle source
# File lib/qaa/api_handler.rb, line 50 def queried_string_uri(handler_url, params) params_str = '' params.each {|k, v| if v.is_a? Array v.each {|value| params_str << (params_str.empty? ? "?#{k}=#{value}" : "&#{k}=#{value}")} else params_str << (params_str.empty? ? "?#{k}=#{v}" : "&#{k}=#{v}") end } URI.parse("#{handler_url}#{params_str}") end
send_request(uri, request)
click to toggle source
# File lib/qaa/api_handler.rb, line 62 def send_request(uri, request) conn = Net::HTTP.new(uri.host, uri.port) conn.request(request) end