chargehound 1.2.0 → 2.0.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: 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