travelpayouts_api 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fcd8f3d6d42a8bd2230efe4627c0901836f3e87f
4
- data.tar.gz: 4e10496471f81af6eb73884d5cb9d0c03c83061d
3
+ metadata.gz: f09a3ce20567df7a4ae3136976d58d3918e729d6
4
+ data.tar.gz: 8aa825e9e69e1fc917c4a6a478f7da65aebe72f8
5
5
  SHA512:
6
- metadata.gz: 6a3cf247c3d8d25d60979396ec677c2efeee01df6d12553d4bf3de97df63c0d3d6697a1be0b62440ce9221661653ac9ee9d01ce3e47fce12bd02c50a7b21a11e
7
- data.tar.gz: 217673f1f56b70a916e453b7491ffaf0cee6d92fdb784b43b1de46ac48dec25d132b5d94a36e6760b1b54f3ef0da2ef5b7ab05263a5891813ed0513f39fece36
6
+ metadata.gz: 146e837156f4150b0e7247ad99e757692576610d11c1c72162ea5fcc110db79ebccdc7c00b266e1b1f0cdb0857a861d8549705fa0e43259b6c9041e988d9cb1f
7
+ data.tar.gz: 78ebd65113e8528d9dc0ad39d7bf106e8ba9e77fbfcb09ac9a167555564feeb8215e168d67b39605826f7392a7dd2dca9ad26878a5851e86b8350847aa0d75c1
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # TravelPayouts API
1
+ # Aviasales/TravelPayouts API gem
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/travelpayouts_api.svg)][gem]
4
4
 
@@ -5,18 +5,12 @@ module TravelPayouts
5
5
  require 'hashie/mash'
6
6
 
7
7
  def request(url, params, skip_parse: false)
8
- token = config.token
9
8
  params[:currency] ||= config.currency
10
- params[:locale] ||= config.locale
9
+ params[:locale] ||= config.locale
11
10
 
12
11
  params.delete_if{ |_, v| v == nil }
13
12
 
14
- headers = {
15
- x_access_token: token,
16
- accept_encoding: 'gzip, deflate',
17
- accept: :json
18
- }
19
- data = RestClient.get url, headers.merge(params: params)
13
+ data = RestClient.get url, request_headers.merge(params: params)
20
14
  skip_parse ? data : respond(data)
21
15
  rescue RestClient::Exception => e
22
16
  err = Error.new(e.response, e.http_code)
@@ -25,58 +19,28 @@ module TravelPayouts
25
19
  end
26
20
 
27
21
  def signed_flight_request(method, url, params)
28
- token = config.token
29
- params[:marker] = config.marker
30
- params[:host] = config.host
22
+ params[:marker] = config.marker.to_s
23
+ params[:host] = config.host
31
24
  params[:currency] ||= config.currency
32
- params[:locale] ||= config.locale if params.has_key?(:locale)
25
+ params[:locale] ||= config.locale if params.has_key?(:locale)
33
26
 
34
27
  params.delete_if{ |_, v| v == nil }
35
28
 
36
- values = [token] + param_values(sort_params(params))
37
- signature = Digest::MD5.hexdigest values.join(':')
38
- params[:signature] = signature
29
+ params[:signature] = signature(params)
39
30
 
40
- headers = {
41
- x_access_token: token,
42
- accept_encoding: 'gzip, deflate',
43
- accept: :json,
44
- content_type: 'application/json'
45
- }
46
-
47
- return respond RestClient.post url, params.to_json, headers if method == :post
48
- respond RestClient.get url, headers.merge(params: params)
49
- rescue RestClient::Exception => e
50
- err = Error.new(e.response, e.http_code)
51
- err.message = e.message
52
- raise err
31
+ run_request(url, params, request_headers(true), method)
53
32
  end
54
33
 
55
34
  def signed_hotel_request(method, url, params)
56
- params[:lang] ||= config.locale if params.has_key?(:lang)
35
+ params[:marker] = config.marker.to_s
57
36
  params[:currency] ||= config.currency
37
+ params[:lang] ||= config.locale if params.has_key?(:lang)
58
38
 
59
39
  params.delete_if{ |_, v| v == nil }
60
40
 
61
- values = [config.token, config.marker] + param_values(sort_params(params))
62
- signature = Digest::MD5.hexdigest values.join(':')
63
- params[:signature] = signature
64
- params[:marker] = config.marker
41
+ params[:signature] = signature(params, config.marker)
65
42
 
66
- headers = {
67
- x_access_token: config.token,
68
- accept_encoding: 'gzip, deflate',
69
- accept: :json,
70
- content_type: 'application/json'
71
- }
72
-
73
- return respond RestClient.post url, params.to_json, headers if method == :post
74
- respond RestClient.get url, headers.merge(params: params)
75
-
76
- rescue RestClient::Exception => e
77
- err = Error.new(e.response, e.http_code)
78
- err.message = e.message
79
- raise err
43
+ run_request(url, params, request_headers(true), method)
80
44
  end
81
45
 
82
46
  def sort_params(params)
@@ -91,6 +55,22 @@ module TravelPayouts
91
55
  params.map{|p| param_values(p)}.flatten
92
56
  end
93
57
 
58
+ def signature(params, marker=nil)
59
+ sign = marker ? [config.token, marker] : [config.token]
60
+ values = sign + param_values(sort_params(params))
61
+ Digest::MD5.hexdigest values.join(':')
62
+ end
63
+
64
+ def request_headers(include_content_type = false)
65
+ {
66
+ x_access_token: config.token,
67
+ accept_encoding: 'gzip, deflate',
68
+ accept: :json
69
+ }.tap do |headers|
70
+ headers[:content_type] = 'application/json' if include_content_type
71
+ end
72
+ end
73
+
94
74
  def respond(resp)
95
75
  begin
96
76
  hash = JSON.parse(resp)
@@ -101,6 +81,15 @@ module TravelPayouts
101
81
  convert_to_mash hash
102
82
  end
103
83
 
84
+ def run_request(url, params, headers, method)
85
+ return respond RestClient.post url, params.to_json, headers if method == :post
86
+ respond RestClient.get url, headers.merge(params: params)
87
+ rescue RestClient::Exception => e
88
+ err = Error.new(e.response, e.http_code)
89
+ err.message = e.message
90
+ raise err
91
+ end
92
+
104
93
  def convert_to_mash(hash)
105
94
  return Hashie::Mash.new hash if hash.is_a? Hash
106
95
  return hash unless hash.is_a? Array
@@ -1,3 +1,3 @@
1
1
  module TravelPayouts
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travelpayouts_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaly Dyatlov