module Vaporizer::HttpClient
Public Instance Methods
define_httparty_request_wrapper(name, method, route, extra_headers = {})
click to toggle source
# File lib/vaporizer/http_client.rb, line 11 def define_httparty_request_wrapper(name, method, route, extra_headers = {}) splited_route = split_route(route) route_params_defined = extract_params_from_route(splited_route) sub_paths = splited_route - route_params_defined route_params_defined = strip_symbolize_route_params(route_params_defined) define_singleton_method name do |params_given = {}, query_params = {}| headers = { 'app_id' => Vaporizer.config.app_id, 'app_key' => Vaporizer.config.app_key }.merge(extra_headers) opts = { headers: headers }.merge(query_params) params_values = get_route_params_values(route_params_defined, params_given) built_path = build_path(sub_paths, params_values) response = Vaporizer::HttpClient.send(method, built_path, opts) handle_response(response) end end
get_route_params_values(url_params, params_given)
click to toggle source
# File lib/vaporizer/http_client.rb, line 33 def get_route_params_values(url_params, params_given) params_values = [] url_params.each do |param| if !params_given.keys.include?(param) raise Vaporizer::MissingPathParameter, "Path parameter #{param} is missing" else params_values << params_given[param] end end params_values end
Private Instance Methods
build_path(sub_paths, params_values)
click to toggle source
# File lib/vaporizer/http_client.rb, line 60 def build_path(sub_paths, params_values) sub_paths.zip(params_values).flatten.compact.join end
extract_params_from_route(splited_path)
click to toggle source
# File lib/vaporizer/http_client.rb, line 72 def extract_params_from_route(splited_path) splited_path.select { |e| e[0] == ':' } end
handle_response(response)
click to toggle source
# File lib/vaporizer/http_client.rb, line 46 def handle_response(response) if response.not_found? raise Vaporizer::NotFound, "#{response.code}" elsif response.client_error? raise Vaporizer::ClientError, "#{response.code}" elsif response.server_error? raise Vaporizer::ServerError, "#{response.code}" elsif response.success? response.parsed_response else raise Vaporizer::Error, "#{response.code}" end end
split_route(route)
click to toggle source
# File lib/vaporizer/http_client.rb, line 68 def split_route(route) route.split(/(:[a-z_]+)/) end
strip_symbolize_route_params(params_array)
click to toggle source
# File lib/vaporizer/http_client.rb, line 64 def strip_symbolize_route_params(params_array) params_array.map { |param| param[1..-1].to_sym } end