killbill-client 0.34.0 → 0.35.0

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: 7884db06718c90098514ddffc4d5840fdf2eea57
4
- data.tar.gz: c062ac56ca9e7c9037d49fe6ec26563c76b09fff
3
+ metadata.gz: dad39131d3cbc2056cd9333e9943faf20e4c8bf8
4
+ data.tar.gz: 54e03e703307ad62140d9ed8d68595a4e879c543
5
5
  SHA512:
6
- metadata.gz: 9f67cdd02e9ede604d08f25f35cdb27402953d4222ef7863d5cd1608c1d8154887a05e175033950c1a0a793a459f91874ebbdd67b9983caf7c976b95387992f4
7
- data.tar.gz: c2a63017349eedd279f487fd431145711db6b15dfc2fcb5649826ac40e4ebf6746f0bb060d793b97f1bc942a99979f2d061100ef28edf038f8f49b172e2dc4d8
6
+ metadata.gz: dcb2f78089cd651ace503d68dac2a398190a5f820de513b32c69923ea27857be5153b8870316d5cce6f45e6fbb57a82cf0048e7bc2da362a35c0b4c5dfe1fe1e
7
+ data.tar.gz: 354334e362fca07e882e912196bdc1044b719c02411ab4f633296a4d05935377701be47fc80ce7e0f5b5f80583964550670a53b5ba57c0dbe7666f0d38c27b1d
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
39
39
 
40
40
  s.rdoc_options << '--exclude' << '.'
41
41
 
42
- s.add_dependency 'json', '>= 1.2.0'
42
+ s.add_dependency 'json', '>= 1.2.0', '< 2.0.0'
43
43
 
44
44
  s.add_development_dependency 'rake', '>= 10.0.0', '< 11.0.0'
45
45
  s.add_development_dependency 'rspec', '~> 3.4'
@@ -63,6 +63,14 @@ module KillBillClient
63
63
  "?#{pairs.join '&'}"
64
64
  end
65
65
 
66
+ def create_http_client(uri, options = {})
67
+ http = ::Net::HTTP.new uri.host, uri.port
68
+ http.read_timeout = options[:read_timeout].to_f / 1000 if options[:read_timeout].is_a? Numeric
69
+ http.open_timeout = options[:connection_timeout].to_f / 1000 if options[:connection_timeout].is_a? Numeric
70
+ http.use_ssl = uri.scheme == 'https'
71
+ http
72
+ end
73
+
66
74
  def request(method, relative_uri, options = {})
67
75
  head = headers.dup
68
76
  head.update options[:head] if options[:head]
@@ -74,7 +82,7 @@ module KillBillClient
74
82
  # Note: make sure to keep the full path (if any) from URI::HTTP, for non-ROOT deployments
75
83
  # See https://github.com/killbill/killbill/issues/221#issuecomment-151980263
76
84
  base_path = uri.request_uri == '/' ? '' : uri.request_uri
77
- uri += (base_path + URI.escape(relative_uri))
85
+ uri += (base_path + URI::DEFAULT_PARSER.escape(relative_uri))
78
86
  else
79
87
  uri = relative_uri
80
88
  uri = URI.parse(uri) unless uri.is_a?(URI)
@@ -140,8 +148,7 @@ module KillBillClient
140
148
  request['X-Request-Id'] = options[:request_id]
141
149
  end
142
150
 
143
- http = ::Net::HTTP.new uri.host, uri.port
144
- http.use_ssl = uri.scheme == 'https'
151
+ http = create_http_client uri, options
145
152
  net_http.each_pair { |key, value| http.send "#{key}=", value }
146
153
 
147
154
  if KillBillClient.logger
@@ -68,7 +68,7 @@ module KillBillClient
68
68
 
69
69
  res.refresh(options)
70
70
 
71
- rescue KillBillClient::API::BadRequest => e
71
+ rescue KillBillClient::API::BadRequest
72
72
  # No invoice to generate : TODO parse json to verify this is indeed the case
73
73
  end
74
74
  end
@@ -94,7 +94,7 @@ module KillBillClient
94
94
 
95
95
  res.refresh(options)
96
96
 
97
- rescue KillBillClient::API::NotFound => e
97
+ rescue KillBillClient::API::NotFound
98
98
  nil
99
99
  end
100
100
  end
@@ -126,7 +126,7 @@ module KillBillClient
126
126
  Invoice
127
127
 
128
128
  res.refresh(options)
129
- rescue KillBillClient::API::NotFound => e
129
+ rescue KillBillClient::API::NotFound
130
130
  nil
131
131
  end
132
132
  end
@@ -160,7 +160,7 @@ module KillBillClient
160
160
  Invoice
161
161
 
162
162
  res.refresh(options)
163
- rescue KillBillClient::API::NotFound => e
163
+ rescue KillBillClient::API::NotFound
164
164
  nil
165
165
  end
166
166
  end
@@ -193,7 +193,7 @@ module KillBillClient
193
193
 
194
194
  res.refresh(options)
195
195
 
196
- rescue KillBillClient::API::NotFound => e
196
+ rescue KillBillClient::API::NotFound
197
197
  nil
198
198
  end
199
199
  end
@@ -15,6 +15,7 @@ module KillBillClient
15
15
  @@attribute_names = {}
16
16
 
17
17
  def initialize(hash = nil)
18
+ @uri = nil
18
19
  # Make sure we support ActiveSupport::HashWithIndifferentAccess for Kaui
19
20
  if hash.respond_to?(:each)
20
21
  hash.each do |key, value|
@@ -75,8 +76,8 @@ module KillBillClient
75
76
  when %r{text/plain}
76
77
  response.body
77
78
  when %r{application/xml}
78
- if response.header['location']
79
- response.header['location']
79
+ if response['location']
80
+ response['location']
80
81
  else
81
82
  response.body
82
83
  end
@@ -84,7 +85,7 @@ module KillBillClient
84
85
  record = from_json resource_class, response.body
85
86
  if record.nil?
86
87
  record = resource_class.new
87
- record.uri = response.header['location']
88
+ record.uri = response['location']
88
89
  end
89
90
 
90
91
  session_id = extract_session_id(response)
@@ -170,26 +171,22 @@ module KillBillClient
170
171
  end
171
172
 
172
173
  def attribute(name)
173
- self.send('attr_accessor', name.to_sym)
174
-
175
- self.instance_variable_set('@json_attributes', []) unless self.instance_variable_get('@json_attributes')
176
- self.instance_variable_get('@json_attributes') << name.to_s
177
-
178
- attributes = self.instance_variable_get('@json_attributes')
179
-
180
- (
181
- class << self;
182
- self
183
- end).send(:define_method, :json_attributes) do
184
- attributes
185
- end
186
- end
174
+ send('attr_accessor', name.to_sym)
175
+ attributes = @json_attributes ||= []
176
+ begin
177
+ json_attributes.push(name.to_s)
178
+ rescue NameError
179
+ (class << self; self; end).
180
+ send(:define_method, :json_attributes) { attributes }
181
+ retry
182
+ end
183
+ end
187
184
 
188
185
  def has_many(attr_name, type = nil)
189
186
  send("attr_accessor", attr_name.to_sym)
190
187
 
191
188
  #add it to attribute_names
192
- @@attribute_names[self.name] = {} unless @@attribute_names[self.name]
189
+ @@attribute_names[self.name] ||= {}
193
190
  @@attribute_names[self.name][attr_name.to_sym] = {:type => type, :cardinality => :many}
194
191
  end
195
192
 
@@ -197,7 +194,7 @@ module KillBillClient
197
194
  send("attr_accessor", attr_name.to_sym)
198
195
 
199
196
  #add it to attribute_names
200
- @@attribute_names[self.name] = {} unless @@attribute_names[self.name]
197
+ @@attribute_names[self.name] ||= {}
201
198
  @@attribute_names[self.name][attr_name.to_sym] = {:type => type, :cardinality => :one}
202
199
  end
203
200
 
@@ -7,8 +7,8 @@ module KillBillClient
7
7
  :session_id,
8
8
  :pagination_max_nb_records,
9
9
  :pagination_total_nb_records,
10
- :pagination_next_page
11
- :response
10
+ :pagination_next_page,
11
+ :response
12
12
 
13
13
  # Same as .each, but fetch remaining pages as we go
14
14
  def each_in_batches(&block)
@@ -27,7 +27,7 @@ module KillBillClient
27
27
  end
28
28
 
29
29
  def delete_tenant_plugin_config(plugin_name, user = nil, reason = nil, comment = nil, options = {})
30
- delete_tenant_user_key_value(plugin_name, "uploadPluginConfig", "plugin config", user, reason, comment, options)
30
+ delete_tenant_key_value(plugin_name, "uploadPluginConfig", "plugin config", user, reason, comment, options)
31
31
  end
32
32
 
33
33
  def get_tenant_user_key_value(key_name, options = {})
@@ -40,7 +40,7 @@ module KillBillClient
40
40
 
41
41
 
42
42
  def delete_tenant_user_key_value(key_name, user = nil, reason = nil, comment = nil, options = {})
43
- delete_tenant_user_key_value(key_name, "userKeyValue", "tenant key/value", user, reason, comment, options)
43
+ delete_tenant_key_value(key_name, "userKeyValue", "tenant key/value", user, reason, comment, options)
44
44
  end
45
45
 
46
46
  def get_tenant_key_value(key_name, key_path, error_id_str, options = {})
@@ -75,7 +75,7 @@ module KillBillClient
75
75
  end
76
76
 
77
77
 
78
- def delete_tenant_user_key_value(key_name, key_path, error_id_str, user = nil, reason = nil, comment = nil, options = {})
78
+ def delete_tenant_key_value(key_name, key_path, error_id_str, user = nil, reason = nil, comment = nil, options = {})
79
79
 
80
80
  require_multi_tenant_options!(options, "Deleting a #{error_id_str} is only supported in multi-tenant mode")
81
81
 
@@ -164,9 +164,9 @@ module KillBillClient
164
164
  created_transaction = yield
165
165
  rescue KillBillClient::API::ResponseError => error
166
166
  response = error.response
167
- if response.header['location']
167
+ if response['location']
168
168
  created_transaction = Transaction.new
169
- created_transaction.uri = response.header['location']
169
+ created_transaction.uri = response['location']
170
170
  else
171
171
  raise error
172
172
  end
@@ -1,7 +1,7 @@
1
1
  module KillBillClient
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 34
4
+ MINOR = 35
5
5
  PATCH = 0
6
6
  PRE = nil
7
7
 
@@ -8,6 +8,10 @@ describe KillBillClient::API do
8
8
  ]
9
9
  }
10
10
 
11
+ let (:ssl_uri) {URI.parse 'https://killbill.io'}
12
+ let (:uri) {URI.parse 'http://killbill.io'}
13
+ let (:timeouts) {{:read_timeout => 10000, :connection_timeout => 5000}}
14
+
11
15
  it 'should send double-encoded uri' do
12
16
  contract_property = KillBillClient::Model::PluginPropertyAttributes.new
13
17
  contract_property.key = :contractId
@@ -46,6 +50,23 @@ describe KillBillClient::API do
46
50
  # also ensure the undecoded value is different so that it was indeed encocded twice
47
51
  expect(output_info_property[1]).not_to eq(CGI.unescape output_info_property[1])
48
52
  end
53
+
54
+ it 'should use the default parameters for http client' do
55
+ http_adapter = DummyForHTTPAdapter.new
56
+ http_client = http_adapter.send(:create_http_client, uri)
57
+ expect(http_client.read_timeout).to eq(60)
58
+ expect(http_client.open_timeout).to be_nil
59
+ expect(http_client.use_ssl?).to be false
60
+ end
61
+
62
+ it 'should set the correct parameters for http client' do
63
+ http_adapter = DummyForHTTPAdapter.new
64
+ http_client = http_adapter.send(:create_http_client, ssl_uri, timeouts)
65
+ expect(http_client.read_timeout).to eq(timeouts[:read_timeout] / 1000)
66
+ expect(http_client.open_timeout).to eq(timeouts[:connection_timeout] / 1000)
67
+ expect(http_client.use_ssl?).to be true
68
+ end
69
+
49
70
  end
50
71
 
51
72
  class DummyForHTTPAdapter
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.0
4
+ version: 0.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Killbill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-26 00:00:00.000000000 Z
11
+ date: 2016-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -17,11 +17,17 @@ dependencies:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.2.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
20
23
  requirement: !ruby/object:Gem::Requirement
21
24
  requirements:
22
25
  - - '>='
23
26
  - !ruby/object:Gem::Version
24
27
  version: 1.2.0
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: 2.0.0
25
31
  prerelease: false
26
32
  type: :runtime
27
33
  - !ruby/object:Gem::Dependency
@@ -181,8 +187,8 @@ files:
181
187
  - lib/rails/generators/killbill_client/config_generator.rb
182
188
  - lib/rails/killbill_client.rb
183
189
  - spec/killbill_client/base_uri_spec.rb
184
- - spec/killbill_client/encoding_spec.rb
185
190
  - spec/killbill_client/errors_spec.rb
191
+ - spec/killbill_client/http_adapter_spec.rb
186
192
  - spec/killbill_client/model_relation_spec.rb
187
193
  - spec/killbill_client/remote/api_spec.rb
188
194
  - spec/killbill_client/remote/model_spec.rb