network-client 1.0.5 → 1.0.7

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: 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