network-client 1.0.5 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c30beae6ba69e4282f6aeb92bcb3db1b67e7cda
4
- data.tar.gz: b826bdcd9e33e89f4397ba62080c1fbebb26dc68
3
+ metadata.gz: 104f2b9b6881d78ca701ef20d479ab9bccbda5cb
4
+ data.tar.gz: cf2c922f4e190608a21cc34e6aeac34965992e45
5
5
  SHA512:
6
- metadata.gz: a912d6b5dd5e72d3f14233c64bb452839e600eb3e23c84627d7d00cf4307a3080e2eae327359b5004e4d8e621fb262d8308edcdc4e902db5d34732221f2dc5c1
7
- data.tar.gz: 87e4d7ce29b3988e6db193e148e24e08b11e7ad6a77df17952318d4eea46cdeb37c921c81038915f6126d22abbd330a76dfec1a3b6796d57378b39bda9e0c5e0
6
+ metadata.gz: bcbc6408931008818e5fcb8dca414119bc1679b9329a4413d8447c008b2e0d01839e57cb3092441b46e93c897c2b4eed3cb555ee0d893c87d7d51d8ab3d62dc3
7
+ data.tar.gz: b60c9f293435e1ea7922dd00d969da17e8cc87ee5f1fb1dd6dba14dff8fa9d3ff80aeecfaf8eadcde1debcfc9d9db68a2a9572bc6b6f80df5bdef5bc2f68e211
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- network-client (1.0.0)
4
+ network-client (1.0.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -21,29 +21,30 @@ module NetworkClient
21
21
  :delete => Net::HTTP::Delete
22
22
  }
23
23
 
24
- def initialize(endpoint:, tries: 1)
24
+ def initialize(endpoint:, tries: 1, headers: {})
25
25
  @uri = URI.parse(endpoint)
26
26
  @tries = tries
27
27
 
28
28
  set_http_client
29
+ set_default_headers(headers)
29
30
  set_logger
30
31
  set_response_struct
31
32
  end
32
33
 
33
- def get(path, params = {})
34
- request_json :get, path, params
34
+ def get(path, params = {}, headers = {})
35
+ request_json :get, path, params, headers
35
36
  end
36
37
 
37
- def post(path, params = {})
38
- request_json :post, path, params
38
+ def post(path, params = {}, headers = {})
39
+ request_json :post, path, params, headers
39
40
  end
40
41
 
41
- def put(path, params = {})
42
- request_json :put, path, params
42
+ def put(path, params = {}, headers = {})
43
+ request_json :put, path, params, headers
43
44
  end
44
45
 
45
- def delete(path, params = {})
46
- request_json :delete, path, params
46
+ def delete(path, params = {}, headers = {})
47
+ request_json :delete, path, params, headers
47
48
  end
48
49
 
49
50
  def set_logger
@@ -62,16 +63,21 @@ module NetworkClient
62
63
 
63
64
  def set_http_client
64
65
  @http = Net::HTTP.new(@uri.host, @uri.port)
65
- @http.use_ssl = true
66
+ @http.use_ssl = @uri.scheme == 'https' ? true : false
66
67
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
67
68
  end
68
69
 
70
+ def set_default_headers(headers)
71
+ defaults = { 'accept' => 'application/json', 'Content-Type' => 'application/json' }
72
+ @default_headers = defaults.merge(headers)
73
+ end
74
+
69
75
  def set_response_struct
70
76
  @response_struct = Struct.new(:code, :body)
71
77
  end
72
78
 
73
- def request_json(http_method, path, params)
74
- response = request(http_method, path, params)
79
+ def request_json(http_method, path, params, headers)
80
+ response = request(http_method, path, params, headers)
75
81
  body = JSON.parse(response.body)
76
82
 
77
83
  @response_struct.new(response.code, body)
@@ -81,8 +87,9 @@ module NetworkClient
81
87
  response
82
88
  end
83
89
 
84
- def request(http_method, path, params = {})
85
- headers = { 'accept' => 'application/json', 'Content-Type' => 'application/json' }
90
+ def request(http_method, path, params, headers)
91
+ headers = @default_headers.merge(headers)
92
+
86
93
  case http_method
87
94
  when :get
88
95
  full_path = encode_path_params(path, params)
@@ -107,7 +114,7 @@ module NetworkClient
107
114
  begin
108
115
  tries_count ||= @tries
109
116
  response = @http.request(request)
110
- rescue Errno::ECONNREFUSED, Net::ReadTimeout, Net::OpenTimeout => error
117
+ rescue errors_to_recover_by_retry => error
111
118
  @logger.warn(error.message)
112
119
  (tries_count -= 1).zero? ? raise : retry
113
120
  else
@@ -116,6 +123,8 @@ module NetworkClient
116
123
  end
117
124
 
118
125
  def errors_to_recover_by_retry
126
+ [Errno::ECONNREFUSED, Net::HTTPServiceUnavailable, Net::ProtocolError, Net::ReadTimeout,
127
+ Net::OpenTimeout, OpenSSL::SSL::SSLError]
119
128
  end
120
129
 
121
130
  def errors_to_recover_by_propogate
@@ -1,3 +1,3 @@
1
1
  module NetworkClient
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: network-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdullah Barrak (abarrak)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-14 00:00:00.000000000 Z
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler