Module: TravelPayouts::Api::Request
- Included in:
- TravelPayouts::Api
- Defined in:
- lib/travelpayouts_api/request.rb
Instance Method Summary collapse
- #convert_to_mash(hash) ⇒ Object
- #param_values(params) ⇒ Object
- #request(url, params, skip_parse: false) ⇒ Object
- #request_headers(include_content_type = false) ⇒ Object
- #respond(resp) ⇒ Object
- #run_request(url, params, headers, method) ⇒ Object
- #signature(params, marker = nil) ⇒ Object
- #signed_flight_request(method, url, params) ⇒ Object
- #signed_hotel_request(method, url, params) ⇒ Object
- #sort_params(params) ⇒ Object
Instance Method Details
#convert_to_mash(hash) ⇒ Object
93 94 95 96 97 |
# File 'lib/travelpayouts_api/request.rb', line 93 def convert_to_mash(hash) return Hashie::Mash.new hash if hash.is_a? Hash return hash unless hash.is_a? Array hash.each{ |_,v| convert_to_mash v } end |
#param_values(params) ⇒ Object
52 53 54 55 56 |
# File 'lib/travelpayouts_api/request.rb', line 52 def param_values(params) return params unless params.is_a?(Hash) || params.is_a?(Array) return params.values.map{|v| param_values(v)}.flatten if params.is_a?(Hash) params.map{|p| param_values(p)}.flatten end |
#request(url, params, skip_parse: false) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/travelpayouts_api/request.rb', line 7 def request(url, params, skip_parse: false) params[:currency] ||= config.currency params[:locale] ||= config.locale params.delete_if{ |_, v| v == nil } data = RestClient.get url, request_headers.merge(params: params) skip_parse ? data : respond(data) rescue RestClient::Exception => e err = Error.new(e.response, e.http_code) err. = e. raise err end |
#request_headers(include_content_type = false) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/travelpayouts_api/request.rb', line 64 def request_headers(include_content_type = false) { x_access_token: config.token, accept_encoding: 'gzip, deflate', accept: :json }.tap do |headers| headers[:content_type] = 'application/json' if include_content_type end end |
#respond(resp) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'lib/travelpayouts_api/request.rb', line 74 def respond(resp) begin hash = JSON.parse(resp) rescue => _ return resp end convert_to_mash hash end |
#run_request(url, params, headers, method) ⇒ Object
84 85 86 87 88 89 90 91 |
# File 'lib/travelpayouts_api/request.rb', line 84 def run_request(url, params, headers, method) return respond RestClient.post url, params.to_json, headers if method == :post respond RestClient.get url, headers.merge(params: params) rescue RestClient::Exception => e err = Error.new(e.response, e.http_code) err. = e. raise err end |
#signature(params, marker = nil) ⇒ Object
58 59 60 61 62 |
# File 'lib/travelpayouts_api/request.rb', line 58 def signature(params, marker=nil) sign = marker ? [config.token, marker] : [config.token] values = sign + param_values(sort_params(params)) Digest::MD5.hexdigest values.join(':') end |
#signed_flight_request(method, url, params) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/travelpayouts_api/request.rb', line 21 def signed_flight_request(method, url, params) params[:marker] = config.marker.to_s params[:host] = config.host params[:currency] ||= config.currency params[:locale] ||= config.locale if params.has_key?(:locale) params.delete_if{ |_, v| v == nil } params[:signature] = signature(params) run_request(url, params, request_headers(true), method) end |
#signed_hotel_request(method, url, params) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/travelpayouts_api/request.rb', line 34 def signed_hotel_request(method, url, params) params[:marker] = config.marker.to_s params[:currency] ||= config.currency params[:lang] ||= config.locale if params.has_key?(:lang) params.delete_if{ |_, v| v == nil } params[:signature] = signature(params, config.marker) run_request(url, params, request_headers(true), method) end |