chargehound 1.2.0 → 2.0.0

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: be69ff643cea24f8f25e438f5a168b97b5a594b1
4
- data.tar.gz: 81c55ba4fba079039d6e1cdbe9484e07d8e1feda
3
+ metadata.gz: aa72d540f445fd4d59ce60f6b24fb5dbe6caa79d
4
+ data.tar.gz: 9667364aa8f85ea683df1c2d4fcea9430f025747
5
5
  SHA512:
6
- metadata.gz: ed24f3d055251bffe65d6e5bdd1177b7ca6b6faff25b82b0ec74d0523c80f8eab8b74e9fa011dd3049e188088454cffdb18240f7831c2a69a7faaef30b083077
7
- data.tar.gz: 1092f2d0b94a1601501255835b04ad67e4a0377a6ed1bb1a162a246c7d8186154bb13c1a62c504a960f2d65dc245e57ed25dc4806aa02b0872cdf397fcf415f9
6
+ metadata.gz: c403bacda18d58039275be0eb992b103d98efff3bfedb759d037ac72214e105da27252d4b1231e0b0fb2401362d4cda164b557147e04b6e1ad671089b7edc0c8
7
+ data.tar.gz: ab489aec72d890dd38bf8cd2ed6019fa0fa567f2704f8f016e2f290f24fd45a2e566cadd53aa2400e8fef8828246ef7d3ee03352fcb596810267c019c9ee450b
@@ -1,13 +1,12 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 1.9.3
5
4
  - 2.0.0
6
5
  - 2.1
7
6
  - 2.2
8
7
  - 2.3.0
9
- - jruby-19mode
10
- - jruby-9.0.5.0
8
+ - 2.3.1
9
+ - jruby-9.1.5.0
11
10
 
12
11
  sudo: false
13
12
 
data/CHANGELOG CHANGED
@@ -4,3 +4,9 @@
4
4
  - Added APIs to pass product lists
5
5
  1.2.0 July, 2016
6
6
  - Added timeout option
7
+ 2.0.0 October, 2016
8
+ - Add Dispute create method
9
+ - Add Dispute response retrieve method
10
+ - Expose response status codes
11
+ - Drop CI support for Ruby 1.9.3
12
+ - Add typed response models
data/README.md CHANGED
@@ -15,6 +15,33 @@ require 'chargehound'
15
15
  Chargehound.api_key = '{ YOUR_API_KEY }'
16
16
  ```
17
17
 
18
+ ### Requests
19
+
20
+ Every resource is accessed via the Chargehound module.
21
+
22
+ ```ruby
23
+ Chargehound::Disputes.submit('dp_123', {
24
+ fields: {
25
+ customer_name: 'Susie'
26
+ }
27
+ })
28
+ ```
29
+
30
+ ### Responses
31
+
32
+ Responses from the API are automatically parsed from JSON and returned as Ruby objects.
33
+
34
+ Responses also include the HTTP status code on the response object as the status field.
35
+
36
+ ```ruby
37
+ dispute = Chargehound::Disputes.retrieve('dp_123')
38
+
39
+ puts dispute.state
40
+ # 'needs_response'
41
+ puts dispute.response.status
42
+ # '200'
43
+ ```
44
+
18
45
  ## Documentation
19
46
 
20
47
  [Disputes](https://www.chargehound.com/docs/api/index.html?ruby#disputes)
@@ -14,8 +14,6 @@ Gem::Specification.new do |spec|
14
14
  spec.description = 'Automatically fight disputes in Stripe'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.add_dependency 'typhoeus', '<2.0'
18
-
19
17
  spec.add_development_dependency 'bundler', '~> 1.5'
20
18
  spec.add_development_dependency 'minitest', '~> 5.8'
21
19
  spec.add_development_dependency 'rake', '~> 11.1'
@@ -1,8 +1,8 @@
1
- require 'base64'
1
+ require 'chargehound/models'
2
2
  require 'chargehound/error'
3
3
  require 'chargehound/version'
4
4
  require 'json'
5
- require 'typhoeus'
5
+ require 'net/http'
6
6
 
7
7
  module Chargehound
8
8
  # Send a request to the Chargehound API
@@ -12,68 +12,109 @@ module Chargehound
12
12
  end
13
13
 
14
14
  def run
15
- response = @request.run
16
-
17
- raise ChargehoundError.create_timeout_error if response.timed_out?
18
-
19
- body = parse_request_body response.body
15
+ host = @request.uri.host
16
+ port = @request.uri.port
17
+ Net::HTTP.start(host, port, build_http_opts) do |http|
18
+ begin
19
+ response = http.request @request
20
+ handle_response response
21
+ rescue Net::ReadTimeout
22
+ raise ChargehoundError.create_timeout_error
23
+ rescue Timeout::Error
24
+ raise ChargehoundError.create_timeout_error
25
+ end
26
+ end
27
+ end
20
28
 
21
- unless response.success?
29
+ def handle_response(response)
30
+ case response
31
+ when Net::HTTPSuccess
32
+ parse_response response
33
+ when Net::HTTPRequestTimeOut
34
+ raise ChargehoundError.create_timeout_error
35
+ else
36
+ body = JSON.parse response.body
22
37
  raise ChargehoundError.create_chargehound_error body
23
38
  end
39
+ end
24
40
 
25
- body
41
+ def build_http_opts
42
+ {
43
+ use_ssl: true,
44
+ read_timeout: Chargehound.timeout
45
+ }
26
46
  end
27
47
 
28
- def build_headers(opts)
48
+ def build_headers(body)
29
49
  headers = {
30
50
  'Accept' => 'application/json',
31
- 'Authorization' =>
32
- "Basic #{Base64.encode64(Chargehound.api_key + ':').chomp}",
33
51
  'User-Agent' => "Chargehound/v1 RubyBindings/#{VERSION}"
34
52
  }
35
- opts[:body] && headers['Content-Type'] = 'application/json'
53
+ body && headers['Content-Type'] = 'application/json'
36
54
  headers
37
55
  end
38
56
 
39
- def build_body(req_opts, http_method, opts)
40
- if [:post, :patch, :put, :delete].include? http_method
41
- req_body = build_request_body opts[:body]
42
- req_opts.update body: req_body
43
- end
57
+ def build_body(body)
58
+ body.to_json if body
44
59
  end
45
60
 
46
- def build_opts(http_method, opts)
47
- query_params = opts[:query_params] || {}
48
- headers = build_headers opts
49
- req_opts = {
50
- method: http_method,
51
- headers: headers,
52
- params: query_params,
53
- timeout: Chargehound.timeout
54
- }
55
- build_body req_opts, http_method, opts
56
- req_opts
61
+ def build_request_instance(http_method, uri, body, headers)
62
+ case http_method
63
+ when :get
64
+ Net::HTTP::Get.new uri, headers
65
+ when :put
66
+ req = Net::HTTP::Put.new uri, headers
67
+ req.body = body
68
+ req
69
+ when :post
70
+ req = Net::HTTP::Post.new uri, headers
71
+ req.body = body
72
+ req
73
+ end
57
74
  end
58
75
 
59
76
  def build_request(http_method, path, opts = {})
60
- url = build_request_url path
77
+ query_params = opts[:query_params] || {}
78
+ body = opts[:body]
61
79
  http_method = http_method.to_sym.downcase
62
- req_opts = build_opts http_method, opts
63
80
 
64
- Typhoeus::Request.new(url, req_opts)
81
+ uri = build_uri path, query_params
82
+ headers = build_headers body
83
+ body = build_body body
84
+
85
+ req = build_request_instance http_method, uri, body, headers
86
+ req.basic_auth Chargehound.api_key, ''
87
+ req
65
88
  end
66
89
 
67
- def build_request_url(path)
68
- 'https://' + Chargehound.host + Chargehound.base_path + path
90
+ def build_uri(path, query_params)
91
+ url = 'https://' + Chargehound.host + Chargehound.base_path + path
92
+ uri = URI(url)
93
+ uri.query = URI.encode_www_form(query_params)
94
+ uri
69
95
  end
70
96
 
71
- def build_request_body(body)
72
- body.to_json
97
+ def convert(dict)
98
+ case dict['object']
99
+ when 'dispute'
100
+ dict['products'].map! { |item| Product.new(item) }
101
+ Dispute.new(dict)
102
+ when 'list'
103
+ dict['data'].map! { |item| convert item }
104
+ list = List.new(dict)
105
+ list
106
+ when 'response'
107
+ Response.new(dict)
108
+ else
109
+ ChargehoundObject.new
110
+ end
73
111
  end
74
112
 
75
- def parse_request_body(body)
76
- JSON.parse body
113
+ def parse_response(response)
114
+ body = JSON.parse response.body
115
+ body = convert body
116
+ body.response = HTTPResponse.new(response.code)
117
+ body
77
118
  end
78
119
  end
79
120
  end
@@ -3,17 +3,18 @@ require 'chargehound/api_request'
3
3
  module Chargehound
4
4
  # Access the Chargehound dispute resource
5
5
  class Disputes
6
+ # Create a dispute
7
+ # @option [Hash] A dispute create object
8
+ # @return [Dispute]
9
+ def self.create(create = {})
10
+ ApiRequest.new(:post, 'disputes', body: create).run
11
+ end
12
+
6
13
  # A list of disputes
7
14
  # This endpoint will list all the disputes that we have synced from Stripe.
8
15
  # By default the disputes will be ordered by `created` with the most recent
9
16
  # dispute first. { }`has_more` will be `true` if more results are available.
10
- # @option [Hash] params the optional parameters
11
- # @option params [Float] :limit Maximum number of disputes to return.
12
- # Default is 20, maximum is 100.
13
- # @option params [String] :starting_after A dispute id.
14
- # Fetch disputes created after this dispute.
15
- # @option params [String] :ending_before A dispute id.
16
- # Fetch disputes created before this dispute.
17
+ # @option [Hash] params the query parameters
17
18
  # @return [Disputes]
18
19
  def self.list(params = {})
19
20
  ApiRequest.new(:get, 'disputes', query_params: params).run
@@ -21,12 +22,19 @@ module Chargehound
21
22
 
22
23
  # Retrieve a dispute
23
24
  # This endpoint will return a single dispute.
24
- # @param dispute_id A dispute id
25
+ # @param [String] dispute_id A dispute id
25
26
  # @return [Dispute]
26
27
  def self.retrieve(dispute_id)
27
28
  ApiRequest.new(:get, "disputes/#{dispute_id}").run
28
29
  end
29
30
 
31
+ # Retrieve the response for a dispute.
32
+ # @param [String] dispute_id A dispute id
33
+ # @return [Dispute]
34
+ def self.response(dispute_id)
35
+ ApiRequest.new(:get, "disputes/#{dispute_id}/response").run
36
+ end
37
+
30
38
  # Submitting a dispute
31
39
  # You will want to submit the dispute through Chargehound after you recieve
32
40
  # a notification from Stripe of a new dispute. With one `POST` request
@@ -36,38 +44,20 @@ module Chargehound
36
44
  # The dispute will also be in the submitted state.
37
45
  # @param dispute_id A dispute id
38
46
  # @option [Hash] update A dispute update object
39
- # @option update [String] :template The id of the template to use.
40
- # @option update [Object] :fields Key value pairs to hydrate the
41
- # template's evidence fields.
42
- # @option update [Object] :products List of products the customer
43
- # purchased.
44
- # @option update [String] :customer_name Update the customer name.
45
- # Will also update the customer name in the evidence fields.
46
- # @option update [String] :customer_email Update the customer email.
47
- # Will also update the customer email in the evidence fields.
48
- # Must be a valid email address.
49
47
  # @return [Dispute]
50
48
  def self.submit(dispute_id, update = {})
51
- ApiRequest.new(:post, "disputes/#{dispute_id}/submit", body: update).run
49
+ ApiRequest.new(:post, "disputes/#{dispute_id}/submit",
50
+ body: update).run
52
51
  end
53
52
 
54
53
  # Updating a dispute
55
54
  # You can update the template and the fields on a dispute.
56
55
  # @param dispute_id A dispute id
57
56
  # @option [Hash] update A dispute update object
58
- # @option update [String] :template The id of the template to use.
59
- # @option update [Object] :fields Key value pairs to hydrate the template's
60
- # evidence fields.
61
- # @option update [Object] :products List of products the customer
62
- # purchased.
63
- # @option update [String] :customer_name Update the customer name.
64
- # Will also update the customer name in the evidence fields.
65
- # @option update [String] :customer_email Update the customer email.
66
- # Will also update the customer email in the evidence fields.
67
- # Must be a valid email address.
68
57
  # @return [Dispute]
69
58
  def self.update(dispute_id, update = {})
70
- ApiRequest.new(:put, "disputes/#{dispute_id}", body: update).run
59
+ ApiRequest.new(:put, "disputes/#{dispute_id}",
60
+ body: update).run
71
61
  end
72
62
  end
73
63
  end
@@ -0,0 +1,45 @@
1
+ require 'ostruct'
2
+
3
+ module Chargehound
4
+ # Base class for Chargehound models
5
+ class ChargehoundObject < OpenStruct
6
+ def to_json(*a)
7
+ as_json(*a).to_json
8
+ end
9
+
10
+ def as_json(*_a)
11
+ hash = {}
12
+ each_pair do |key, value|
13
+ hash[key] = convert(value)
14
+ end
15
+ hash
16
+ end
17
+
18
+ def convert(value)
19
+ if value.is_a?(OpenStruct)
20
+ value.as_json
21
+ elsif value.is_a?(Array)
22
+ value.map { |item| convert(item) }
23
+ elsif value.is_a?(Struct)
24
+ value.to_h
25
+ else
26
+ value
27
+ end
28
+ end
29
+ end
30
+
31
+ class Dispute < ChargehoundObject
32
+ end
33
+
34
+ class Response < ChargehoundObject
35
+ end
36
+
37
+ class List < ChargehoundObject
38
+ end
39
+
40
+ class Product < ChargehoundObject
41
+ end
42
+
43
+ # Expose response properties via this struct on response objects
44
+ HTTPResponse = Struct.new(:status)
45
+ end
@@ -1,3 +1,3 @@
1
1
  module Chargehound
2
- VERSION = '1.2.0'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -13,6 +13,10 @@ post_headers = {
13
13
  'User-Agent' => "Chargehound/v1 RubyBindings/#{Chargehound::VERSION}"
14
14
  }
15
15
 
16
+ dispute_create = {
17
+ id: 'dp_123'
18
+ }
19
+
16
20
  dispute_update = {
17
21
  fields: {
18
22
  customer_name: 'Susie'
@@ -44,9 +48,52 @@ dispute_with_product_info_update = {
44
48
  ]
45
49
  }
46
50
 
51
+ dispute_with_product_info_response = {
52
+ id: 'dp_123',
53
+ object: 'dispute',
54
+ fields: {
55
+ customer_name: 'Susie'
56
+ },
57
+ products: [
58
+ {
59
+ name: 'Saxophone',
60
+ description: 'Alto saxophone, with carrying case',
61
+ image: 'http://s3.amazonaws.com/chargehound/saxophone.png',
62
+ sku: '17283001272',
63
+ quantity: 1,
64
+ amount: 20_000,
65
+ url: 'http://www.example.com'
66
+ }, {
67
+ name: 'Milk',
68
+ description: 'Semi-skimmed Organic',
69
+ image: 'http://s3.amazonaws.com/chargehound/milk.png',
70
+ sku: '26377382910',
71
+ quantity: '64oz',
72
+ amount: 400,
73
+ url: 'http://www.example.com'
74
+ }
75
+ ]
76
+ }
77
+
47
78
  dispute_response = {
48
- 'id' => 'dp_123'
49
- }.to_json
79
+ id: 'dp_123',
80
+ object: 'dispute',
81
+ products: []
82
+ }
83
+
84
+ dispute_list_response = {
85
+ object: 'list',
86
+ data: [{
87
+ id: 'dp_123',
88
+ object: 'dispute',
89
+ products: []
90
+ }]
91
+ }
92
+
93
+ response_response = {
94
+ dispute_id: 'dp_123',
95
+ object: 'response'
96
+ }
50
97
 
51
98
  describe Chargehound::Disputes do
52
99
  before do
@@ -57,10 +104,71 @@ describe Chargehound::Disputes do
57
104
  WebMock.reset!
58
105
  end
59
106
 
107
+ it 'can expose the response status code' do
108
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes')
109
+ .with(headers: get_headers)
110
+ .to_return(body: dispute_list_response.to_json)
111
+
112
+ list = Chargehound::Disputes.list
113
+ assert_requested stub
114
+ assert_equal('200', list.response.status)
115
+ end
116
+
117
+ it 'uses typed response objects' do
118
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes')
119
+ .with(headers: get_headers)
120
+ .to_return(body: dispute_list_response.to_json)
121
+
122
+ list = Chargehound::Disputes.list
123
+ assert_requested stub
124
+
125
+ assert_instance_of(Chargehound::List, list)
126
+ assert_instance_of(Chargehound::Dispute, list.data[0])
127
+
128
+ assert_equal('list', list.object)
129
+ assert_equal('dp_123', list.data[0].id)
130
+ end
131
+
132
+ it 'typed response objects can be JSON stringified' do
133
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes')
134
+ .with(headers: get_headers)
135
+ .to_return(body: dispute_list_response.to_json)
136
+
137
+ list = Chargehound::Disputes.list
138
+ assert_requested stub
139
+
140
+ list_hash = list.as_json
141
+ list_json = list.to_json
142
+
143
+ response = {
144
+ object: 'list',
145
+ data: [{
146
+ id: 'dp_123',
147
+ object: 'dispute',
148
+ products: []
149
+ }],
150
+ response: {
151
+ status: '200'
152
+ }
153
+ }
154
+
155
+ assert_equal(response, list_hash)
156
+ assert_equal(response.to_json, list_json)
157
+ end
158
+
159
+ it 'can create a dispute' do
160
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes')
161
+ .with(headers: post_headers)
162
+ .to_return(body: dispute_response.to_json)
163
+
164
+ Chargehound::Disputes.create(dispute_create)
165
+ assert_requested stub
166
+ end
167
+
60
168
  it 'can list disputes' do
61
169
  stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes')
62
170
  .with(headers: get_headers)
63
- .to_return(body: dispute_response)
171
+ .to_return(body: dispute_list_response.to_json)
64
172
 
65
173
  Chargehound::Disputes.list
66
174
  assert_requested stub
@@ -69,17 +177,28 @@ describe Chargehound::Disputes do
69
177
  it 'can retrieve a dispute' do
70
178
  stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes/dp_123')
71
179
  .with(headers: get_headers)
72
- .to_return(body: dispute_response)
180
+ .to_return(body: dispute_response.to_json)
73
181
 
74
182
  Chargehound::Disputes.retrieve('dp_123')
75
183
  assert_requested stub
76
184
  end
77
185
 
186
+ it 'can retrieve a dispute response' do
187
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes/dp_123/response')
188
+ .with(headers: get_headers)
189
+ .to_return(body: response_response.to_json)
190
+
191
+ response = Chargehound::Disputes.response('dp_123')
192
+ assert_instance_of(Chargehound::Response, response)
193
+ assert_equal('dp_123', response.dispute_id)
194
+ assert_requested stub
195
+ end
196
+
78
197
  it 'can submit a dispute' do
79
198
  stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
80
199
  .with(headers: post_headers,
81
200
  body: dispute_update.to_json)
82
- .to_return(body: dispute_response,
201
+ .to_return(body: dispute_response.to_json,
83
202
  status: 201)
84
203
 
85
204
  Chargehound::Disputes.submit('dp_123', dispute_update)
@@ -90,17 +209,31 @@ describe Chargehound::Disputes do
90
209
  stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
91
210
  .with(headers: post_headers,
92
211
  body: dispute_with_product_info_update.to_json)
93
- .to_return(body: dispute_response,
212
+ .to_return(body: dispute_with_product_info_response.to_json,
94
213
  status: 201)
95
214
 
96
215
  Chargehound::Disputes.submit('dp_123', dispute_with_product_info_update)
97
216
  assert_requested stub
98
217
  end
99
218
 
219
+ it 'has a model for product data' do
220
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
221
+ .with(headers: post_headers,
222
+ body: dispute_with_product_info_update.to_json)
223
+ .to_return(body: dispute_with_product_info_response.to_json,
224
+ status: 201)
225
+
226
+ dispute = Chargehound::Disputes.submit('dp_123',
227
+ dispute_with_product_info_update)
228
+
229
+ assert_instance_of(Chargehound::Product, dispute.products[0])
230
+ assert_requested stub
231
+ end
232
+
100
233
  it 'can update a dispute' do
101
234
  stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
102
235
  .with(headers: post_headers, body: dispute_update.to_json)
103
- .to_return(body: dispute_response)
236
+ .to_return(body: dispute_response.to_json)
104
237
 
105
238
  Chargehound::Disputes.update('dp_123', dispute_update)
106
239
  assert_requested stub
@@ -110,7 +243,7 @@ describe Chargehound::Disputes do
110
243
  stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
111
244
  .with(headers: post_headers,
112
245
  body: dispute_with_product_info_update.to_json)
113
- .to_return(body: dispute_response)
246
+ .to_return(body: dispute_response.to_json)
114
247
 
115
248
  Chargehound::Disputes.update('dp_123', dispute_with_product_info_update)
116
249
  assert_requested stub
metadata CHANGED
@@ -1,69 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chargehound
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chargehound
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-26 00:00:00.000000000 Z
11
+ date: 2016-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: typhoeus
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - <
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - <
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ~>
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
19
  version: '1.5'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ~>
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
26
  version: '1.5'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: minitest
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ~>
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
33
  version: '5.8'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ~>
38
+ - - "~>"
53
39
  - !ruby/object:Gem::Version
54
40
  version: '5.8'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
47
  version: '11.1'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
54
  version: '11.1'
69
55
  - !ruby/object:Gem::Dependency
@@ -84,14 +70,14 @@ dependencies:
84
70
  name: webmock
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ~>
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
75
  version: '2.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ~>
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '2.0'
97
83
  description: Automatically fight disputes in Stripe
@@ -102,9 +88,9 @@ extensions: []
102
88
  extra_rdoc_files:
103
89
  - README.md
104
90
  files:
105
- - .gitignore
106
- - .rubocop.yml
107
- - .travis.yml
91
+ - ".gitignore"
92
+ - ".rubocop.yml"
93
+ - ".travis.yml"
108
94
  - CHANGELOG
109
95
  - Gemfile
110
96
  - LICENSE
@@ -116,6 +102,7 @@ files:
116
102
  - lib/chargehound/api_request.rb
117
103
  - lib/chargehound/disputes.rb
118
104
  - lib/chargehound/error.rb
105
+ - lib/chargehound/models.rb
119
106
  - lib/chargehound/version.rb
120
107
  - test/chargehound_test.rb
121
108
  - test/disputes_test.rb
@@ -131,17 +118,17 @@ require_paths:
131
118
  - lib
132
119
  required_ruby_version: !ruby/object:Gem::Requirement
133
120
  requirements:
134
- - - '>='
121
+ - - ">="
135
122
  - !ruby/object:Gem::Version
136
123
  version: 1.9.3
137
124
  required_rubygems_version: !ruby/object:Gem::Requirement
138
125
  requirements:
139
- - - '>='
126
+ - - ">="
140
127
  - !ruby/object:Gem::Version
141
128
  version: '0'
142
129
  requirements: []
143
130
  rubyforge_project:
144
- rubygems_version: 2.0.14
131
+ rubygems_version: 2.5.1
145
132
  signing_key:
146
133
  specification_version: 4
147
134
  summary: Ruby bindings for the Chargehound API