heartland-retail 5.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 +7 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.travis.yml +16 -0
- data/.yardopts +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +84 -0
- data/LICENSE +21 -0
- data/README.md +272 -0
- data/Rakefile +18 -0
- data/heartland-retail.gemspec +17 -0
- data/lib/heartland-retail.rb +1 -0
- data/lib/heartland/client.rb +299 -0
- data/lib/heartland/client/body.rb +13 -0
- data/lib/heartland/client/collection.rb +121 -0
- data/lib/heartland/client/errors.rb +17 -0
- data/lib/heartland/client/resource.rb +215 -0
- data/lib/heartland/client/response.rb +84 -0
- data/lib/heartland/client/uri.rb +117 -0
- data/spec/heartland/client/body_spec.rb +31 -0
- data/spec/heartland/client/resource_spec.rb +318 -0
- data/spec/heartland/client/response_spec.rb +105 -0
- data/spec/heartland/client/uri_spec.rb +157 -0
- data/spec/heartland/client_spec.rb +361 -0
- data/spec/shared_client_context.rb +5 -0
- data/spec/spec_helper.rb +17 -0
- data/vendor/cache/addressable-2.2.8.gem +0 -0
- data/vendor/cache/codeclimate-test-reporter-1.0.8.gem +0 -0
- data/vendor/cache/coderay-1.1.0.gem +0 -0
- data/vendor/cache/coveralls-0.7.11.gem +0 -0
- data/vendor/cache/crack-0.4.2.gem +0 -0
- data/vendor/cache/diff-lcs-1.2.5.gem +0 -0
- data/vendor/cache/docile-1.1.5.gem +0 -0
- data/vendor/cache/faraday-0.17.3.gem +0 -0
- data/vendor/cache/hashie-4.1.0.gem +0 -0
- data/vendor/cache/json-2.3.0.gem +0 -0
- data/vendor/cache/method_source-0.8.2.gem +0 -0
- data/vendor/cache/mime-types-2.4.3.gem +0 -0
- data/vendor/cache/multi_json-1.11.0.gem +0 -0
- data/vendor/cache/multipart-post-2.1.1.gem +0 -0
- data/vendor/cache/netrc-0.10.3.gem +0 -0
- data/vendor/cache/pry-0.10.1.gem +0 -0
- data/vendor/cache/rake-10.4.2.gem +0 -0
- data/vendor/cache/rest-client-1.7.3.gem +0 -0
- data/vendor/cache/rspec-3.2.0.gem +0 -0
- data/vendor/cache/rspec-core-3.2.2.gem +0 -0
- data/vendor/cache/rspec-expectations-3.2.0.gem +0 -0
- data/vendor/cache/rspec-mocks-3.2.1.gem +0 -0
- data/vendor/cache/rspec-support-3.2.2.gem +0 -0
- data/vendor/cache/safe_yaml-1.0.4.gem +0 -0
- data/vendor/cache/simplecov-0.9.2.gem +0 -0
- data/vendor/cache/simplecov-html-0.9.0.gem +0 -0
- data/vendor/cache/slop-3.6.0.gem +0 -0
- data/vendor/cache/term-ansicolor-1.3.0.gem +0 -0
- data/vendor/cache/thor-0.19.1.gem +0 -0
- data/vendor/cache/tins-1.3.5.gem +0 -0
- data/vendor/cache/webmock-1.17.4.gem +0 -0
- metadata +140 -0
@@ -0,0 +1,361 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HeartlandRetail::Client do
|
4
|
+
include_context "client"
|
5
|
+
|
6
|
+
describe "connection" do
|
7
|
+
it "should be a Faraday::Connection" do
|
8
|
+
expect(client.connection).to be_a Faraday::Connection
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "auth" do
|
13
|
+
it "should attempt to authenticate with the given username and password" do
|
14
|
+
request_stub = stub_request(:post, "#{base_url}/auth/identity/callback").with(
|
15
|
+
:body => "auth_key=coco&password=boggle",
|
16
|
+
:headers => {'Content-Type' => 'application/x-www-form-urlencoded'}
|
17
|
+
)
|
18
|
+
|
19
|
+
client.auth(:username => 'coco', :password => 'boggle')
|
20
|
+
expect(request_stub).to have_been_requested
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should raise an exception if called without username or password" do
|
24
|
+
expect { client.auth }.to raise_error("Must specify :username and :password")
|
25
|
+
expect { client.auth(:username => 'x') }.to raise_error("Must specify :username and :password")
|
26
|
+
expect { client.auth(:password => 'y') }.to raise_error("Must specify :username and :password")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return true if auth succeeds" do
|
30
|
+
stub_request(:post, "#{base_url}/auth/identity/callback").to_return(:status => 200)
|
31
|
+
expect(client.auth(:username => 'someone', :password => 'right')).to be_truthy
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should raise an AuthFailed if auth fails" do
|
35
|
+
stub_request(:post, "#{base_url}/auth/identity/callback").to_return(:status => 401)
|
36
|
+
expect { client.auth(:username => 'someone', :password => 'wrong') }.to \
|
37
|
+
raise_error(HeartlandRetail::Client::AuthFailed, "Heartland Retail auth failed")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should store the session cookie" do
|
41
|
+
stub_request(:post, "#{base_url}/auth/identity/callback").to_return(headers: {'set-cookie' => '123'})
|
42
|
+
client.auth(:username => 'someone', :password => 'right')
|
43
|
+
expect(client.instance_variable_get(:@session_cookie)).to eq('123')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "initialize" do
|
48
|
+
it "should call configure_connection!" do
|
49
|
+
expect_any_instance_of(HeartlandRetail::Client).to receive(:configure_connection!)
|
50
|
+
HeartlandRetail::Client.new(base_url, :x => 'y')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "configure_connection" do
|
55
|
+
it "should set the connection's url_prefix" do
|
56
|
+
client.__send__(:configure_connection!)
|
57
|
+
expect(connection.url_prefix.to_s).to eq(base_url)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should allow setting insecure on the connection" do
|
61
|
+
client.__send__(:opts)[:insecure] = true
|
62
|
+
client.__send__(:configure_connection!)
|
63
|
+
expect(connection.ssl[:verify]).to be false
|
64
|
+
end
|
65
|
+
|
66
|
+
it "set the default timeout" do
|
67
|
+
client.__send__(:configure_connection!)
|
68
|
+
expect(connection.options.timeout).to eq(HeartlandRetail::Client::DEFAULT_TIMEOUT)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "set the default connect timeout" do
|
72
|
+
client.__send__(:configure_connection!)
|
73
|
+
expect(connection.options.open_timeout).to eq(HeartlandRetail::Client::DEFAULT_CONNECT_TIMEOUT)
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'headers' do
|
77
|
+
let(:headers) { double('headers') }
|
78
|
+
before do
|
79
|
+
connection = double('Connection').as_null_object
|
80
|
+
allow(Faraday).to receive(:new).and_return(connection)
|
81
|
+
allow(connection).to receive(:headers).and_return(headers)
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'sets Content-Type header' do
|
85
|
+
expect(headers).to receive(:[]=).once.with('Content-Type', 'application/json')
|
86
|
+
expect(headers).to receive(:[]=).once.with('Authorization', 'Bearer token')
|
87
|
+
HeartlandRetail::Client.new(base_url, token: 'token')
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "[]" do
|
93
|
+
it "should return a resource object with the given path string and client" do
|
94
|
+
expect(client["path"]).to be_a HeartlandRetail::Client::Resource
|
95
|
+
expect(client[:path].uri.to_s).to eq("#{base_url}/path")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should return a resource object when given a path as a symbol" do
|
99
|
+
expect(client[:path]).to be_a HeartlandRetail::Client::Resource
|
100
|
+
expect(client[:path].uri.to_s).to eq("#{base_url}/path")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should return a resource object when given a path as a URI" do
|
104
|
+
uri = 'path'.to_uri
|
105
|
+
expect(client[uri]).to be_a HeartlandRetail::Client::Resource
|
106
|
+
expect(client[uri].uri.to_s).to eq("#{base_url}/path")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should not duplicate the base URI path" do
|
110
|
+
expect(client['api/subpath'].uri.to_s).to eq("#{base_url}/subpath")
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should not duplicate the base URI" do
|
114
|
+
expect(client["#{base_url}/subpath"].uri.to_s).to eq("#{base_url}/subpath")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "debug=" do
|
119
|
+
it "should set opts[:debug]" do
|
120
|
+
logger = double
|
121
|
+
allow(Logger).to receive(:new).with('/path/to/log').and_return(logger)
|
122
|
+
|
123
|
+
client.debug = '/path/to/log'
|
124
|
+
expect(client.__send__(:opts)[:debug]).to eq('/path/to/log')
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should reconfigure connection" do
|
128
|
+
logger = double
|
129
|
+
allow(Logger).to receive(:new).with('/path/to/log').and_return(logger)
|
130
|
+
|
131
|
+
expect(client).to receive(:configure_connection!)
|
132
|
+
client.debug = '/path/to/log'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
[:get, :head, :delete].each do |method|
|
137
|
+
bang_method = "#{method}!"
|
138
|
+
describe method do
|
139
|
+
it "should call connection's #{method}" do
|
140
|
+
expect(connection).to receive(method).with('relative/path')
|
141
|
+
|
142
|
+
client.__send__(method, '/relative/path')
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should return a HeartlandRetail::Client::Response" do
|
146
|
+
stub_request(method, "#{base_url}/relative/path")
|
147
|
+
response = client.__send__(method, '/relative/path')
|
148
|
+
expect(response).to be_a HeartlandRetail::Client::Response
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should remove redundant base path prefix from URL if present" do
|
152
|
+
stub_request(method, "#{base_url}/relative/path")
|
153
|
+
response = client.__send__(method, '/api/relative/path')
|
154
|
+
expect(response).to be_a HeartlandRetail::Client::Response
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe bang_method do
|
159
|
+
it "should call #{method}" do
|
160
|
+
response = double(HeartlandRetail::Client::Response)
|
161
|
+
expect(response).to receive(:success?).and_return(true)
|
162
|
+
expect(client).to receive(method).with('/path', false).and_return(response)
|
163
|
+
expect(client.__send__(bang_method, '/path')).to be === response
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should raise an exception on failure" do
|
167
|
+
response = double(HeartlandRetail::Client::Response)
|
168
|
+
expect(response).to receive(:success?).and_return(false)
|
169
|
+
expect(response).to receive(:status).and_return(404)
|
170
|
+
expect(client).to receive(method).with('/path', false).and_return(response)
|
171
|
+
expect { client.send(bang_method, '/path') }.to raise_error(HeartlandRetail::Client::RequestFailed)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
[:put, :post].each do |method|
|
177
|
+
bang_method = "#{method}!"
|
178
|
+
describe method do
|
179
|
+
it "should call connection's #{method}" do
|
180
|
+
request = double.as_null_object
|
181
|
+
|
182
|
+
expect(request).to receive(:body=).with('body')
|
183
|
+
expect(connection).to receive(method).with('relative/path').and_yield(request)
|
184
|
+
|
185
|
+
client.__send__(method, '/relative/path', 'body')
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should return a HeartlandRetail::Client::Response" do
|
189
|
+
stub_request(method, "#{base_url}/relative/path")
|
190
|
+
response = client.__send__(method, '/relative/path', 'body')
|
191
|
+
expect(response).to be_a HeartlandRetail::Client::Response
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should serialize the request body as JSON if it is a hash" do
|
195
|
+
request = double.as_null_object
|
196
|
+
body_hash = {:key1 => 'val1', :key2 => 'val2'}
|
197
|
+
|
198
|
+
expect(connection).to receive(method).and_yield(request)
|
199
|
+
expect(request).to receive(:body=).with(body_hash.to_json)
|
200
|
+
|
201
|
+
client.__send__(method, '/path', body_hash)
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should set the Content-Type header to application/json if not specified" do
|
205
|
+
request_stub = stub_request(method, "#{base_url}/my/resource").
|
206
|
+
with(:headers => {'Content-Type' => 'application/json'})
|
207
|
+
client.__send__(method, '/my/resource', :key1 => 'val1')
|
208
|
+
expect(request_stub).to have_been_requested
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should set the Content-Type header to specified value if specified" do
|
212
|
+
request_stub = stub_request(method, "#{base_url}/my/resource").
|
213
|
+
with(:headers => {'Content-Type' => 'application/pdf'})
|
214
|
+
client.__send__(method, '/my/resource', {:key1 => 'val1'}, 'Content-Type' => 'application/pdf')
|
215
|
+
expect(request_stub).to have_been_requested
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
describe bang_method do
|
220
|
+
it "should call #{method}" do
|
221
|
+
response = double(HeartlandRetail::Client::Response)
|
222
|
+
expect(response).to receive(:success?).and_return(true)
|
223
|
+
expect(client).to receive(method).with('/path', 'body', false).and_return(response)
|
224
|
+
expect(client.__send__(bang_method, '/path', 'body')).to be === response
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should raise an exception on failure" do
|
228
|
+
response = double(HeartlandRetail::Client::Response)
|
229
|
+
expect(response).to receive(:success?).and_return(false)
|
230
|
+
expect(response).to receive(:status).and_return(404)
|
231
|
+
expect(client).to receive(method).with('/path', 'body', false).and_return(response)
|
232
|
+
expect { client.send(bang_method, '/path', 'body') }.to raise_error { |error|
|
233
|
+
expect(error).to be_a(HeartlandRetail::Client::RequestFailed)
|
234
|
+
expect(error.response).to be === response
|
235
|
+
}
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
describe "each_page" do
|
241
|
+
it "should request each page of the collection and yield each response to the block" do
|
242
|
+
responses = (1..3).map do |p|
|
243
|
+
response = double(HeartlandRetail::Client::Response)
|
244
|
+
allow(response).to receive(:[]).with('pages').and_return(3)
|
245
|
+
|
246
|
+
expect(client).to receive(:get!).with("/things?page=#{p}&per_page=20".to_uri).and_return(response)
|
247
|
+
|
248
|
+
response
|
249
|
+
end
|
250
|
+
|
251
|
+
expect do |block|
|
252
|
+
client.each_page('/things', &block)
|
253
|
+
end.to yield_successive_args(*responses)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
describe "each" do
|
258
|
+
it "should request each page of the collection and yield each individual result to the block" do
|
259
|
+
all_results = (1..3).inject([]) do |results, p|
|
260
|
+
response = double(HeartlandRetail::Client::Response)
|
261
|
+
allow(response).to receive(:[]).with('pages').and_return(3)
|
262
|
+
|
263
|
+
page_results = 20.times.map {|i| "Page #{p} result #{i+1}"}
|
264
|
+
results += page_results
|
265
|
+
|
266
|
+
allow(response).to receive(:[]).with('results').and_return(page_results)
|
267
|
+
|
268
|
+
expect(client).to receive(:get!).with("/things?page=#{p}&per_page=20".to_uri).and_return(response)
|
269
|
+
|
270
|
+
results
|
271
|
+
end
|
272
|
+
|
273
|
+
expect do |block|
|
274
|
+
client.each('/things', &block)
|
275
|
+
end.to yield_successive_args(*all_results)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
describe "count" do
|
280
|
+
it "should request the first page/record of the collection and return the total" do
|
281
|
+
response = double(HeartlandRetail::Client::Response)
|
282
|
+
allow(response).to receive(:[]).with('total').and_return(17)
|
283
|
+
expect(client).to receive(:get!).with("/things?page=1&per_page=1".to_uri)
|
284
|
+
.and_return(response)
|
285
|
+
expect(client.count('/things')).to eq(17)
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
describe Springboard::Client do
|
291
|
+
include_context "client"
|
292
|
+
let(:client) { Springboard::Client.new(base_url) }
|
293
|
+
|
294
|
+
describe "initialize" do
|
295
|
+
it "should call configure_connection! and return a HeartlandRetail::Client" do
|
296
|
+
expect_any_instance_of(HeartlandRetail::Client).to receive(:configure_connection!)
|
297
|
+
client = Springboard::Client.new(base_url, :x => 'y')
|
298
|
+
expect(client).to be_a HeartlandRetail::Client
|
299
|
+
end
|
300
|
+
|
301
|
+
it "should include a deprecation warning" do
|
302
|
+
deprecation_message = "[DEPRECATION] `Springboard::Client.new` is deprecated. Please use `HeartlandRetail::Client.new` instead.\n"
|
303
|
+
expect { Springboard::Client.new(base_url) }.to output(deprecation_message).to_stderr
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
describe "errors" do
|
308
|
+
describe "legacy error handling" do
|
309
|
+
describe "AuthFailed" do
|
310
|
+
it "should raise a Springboard class error if auth fails" do
|
311
|
+
stub_request(:post, "#{base_url}/auth/identity/callback").to_return(:status => 401)
|
312
|
+
expect { client.auth(:username => 'someone', :password => 'wrong') }.to \
|
313
|
+
raise_error(Springboard::Client::AuthFailed, "Heartland Retail auth failed")
|
314
|
+
end
|
315
|
+
|
316
|
+
it "should rescue a Springboard class error" do
|
317
|
+
stub_request(:post, "#{base_url}/auth/identity/callback").to_return(:status => 401)
|
318
|
+
rescued = nil
|
319
|
+
begin
|
320
|
+
client.auth(:username => 'someone', :password => 'wrong')
|
321
|
+
rescue Springboard::Client::AuthFailed => err
|
322
|
+
rescued = true
|
323
|
+
end
|
324
|
+
expect(rescued).to eq(true)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
describe "RequestFailed" do
|
329
|
+
it "should raise an Springboard class error if request fails" do
|
330
|
+
response = double(Springboard::Client::Response)
|
331
|
+
expect(response).to receive(:success?).and_return(false)
|
332
|
+
expect(response).to receive(:status).and_return(404)
|
333
|
+
expect(client).to receive(:get).with('/path', false).and_return(response)
|
334
|
+
expect { client.get!('/path') }.to raise_error(Springboard::Client::RequestFailed)
|
335
|
+
end
|
336
|
+
|
337
|
+
it "should rescue a Springboard class error" do
|
338
|
+
response = double(Springboard::Client::Response)
|
339
|
+
expect(response).to receive(:success?).and_return(false)
|
340
|
+
expect(response).to receive(:status).and_return(404)
|
341
|
+
expect(client).to receive(:get).with('/path', false).and_return(response)
|
342
|
+
rescued = nil
|
343
|
+
begin
|
344
|
+
client.get!('/path')
|
345
|
+
rescue Springboard::Client::RequestFailed => err
|
346
|
+
rescued = true
|
347
|
+
end
|
348
|
+
expect(rescued).to eq(true)
|
349
|
+
end
|
350
|
+
end
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
[:get, :head, :delete, :put, :post, :debug=, :[], :auth, :connection].each do |method|
|
355
|
+
describe method do
|
356
|
+
it "should respond to the HeartlandRetail::Client method #{method}" do
|
357
|
+
expect(client).to respond_to(method)
|
358
|
+
end
|
359
|
+
end
|
360
|
+
end
|
361
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
4
|
+
require 'heartland-retail'
|
5
|
+
require 'webmock/rspec'
|
6
|
+
require 'shared_client_context'
|
7
|
+
|
8
|
+
RSpec.configure do |c|
|
9
|
+
c.filter_run :focus => true
|
10
|
+
c.run_all_when_everything_filtered = true
|
11
|
+
end
|
12
|
+
|
13
|
+
class String
|
14
|
+
def to_uri
|
15
|
+
HeartlandRetail::Client::URI.parse(self)
|
16
|
+
end
|
17
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: heartland-retail
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 5.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jay Stotz
|
8
|
+
- Derek Stotz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: faraday
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "<"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "<"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: json
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.7.4
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.7.4
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: hashie
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
description:
|
57
|
+
email:
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- ".yardopts"
|
66
|
+
- Gemfile
|
67
|
+
- Gemfile.lock
|
68
|
+
- LICENSE
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- heartland-retail.gemspec
|
72
|
+
- lib/heartland-retail.rb
|
73
|
+
- lib/heartland/client.rb
|
74
|
+
- lib/heartland/client/body.rb
|
75
|
+
- lib/heartland/client/collection.rb
|
76
|
+
- lib/heartland/client/errors.rb
|
77
|
+
- lib/heartland/client/resource.rb
|
78
|
+
- lib/heartland/client/response.rb
|
79
|
+
- lib/heartland/client/uri.rb
|
80
|
+
- spec/heartland/client/body_spec.rb
|
81
|
+
- spec/heartland/client/resource_spec.rb
|
82
|
+
- spec/heartland/client/response_spec.rb
|
83
|
+
- spec/heartland/client/uri_spec.rb
|
84
|
+
- spec/heartland/client_spec.rb
|
85
|
+
- spec/shared_client_context.rb
|
86
|
+
- spec/spec_helper.rb
|
87
|
+
- vendor/cache/addressable-2.2.8.gem
|
88
|
+
- vendor/cache/codeclimate-test-reporter-1.0.8.gem
|
89
|
+
- vendor/cache/coderay-1.1.0.gem
|
90
|
+
- vendor/cache/coveralls-0.7.11.gem
|
91
|
+
- vendor/cache/crack-0.4.2.gem
|
92
|
+
- vendor/cache/diff-lcs-1.2.5.gem
|
93
|
+
- vendor/cache/docile-1.1.5.gem
|
94
|
+
- vendor/cache/faraday-0.17.3.gem
|
95
|
+
- vendor/cache/hashie-4.1.0.gem
|
96
|
+
- vendor/cache/json-2.3.0.gem
|
97
|
+
- vendor/cache/method_source-0.8.2.gem
|
98
|
+
- vendor/cache/mime-types-2.4.3.gem
|
99
|
+
- vendor/cache/multi_json-1.11.0.gem
|
100
|
+
- vendor/cache/multipart-post-2.1.1.gem
|
101
|
+
- vendor/cache/netrc-0.10.3.gem
|
102
|
+
- vendor/cache/pry-0.10.1.gem
|
103
|
+
- vendor/cache/rake-10.4.2.gem
|
104
|
+
- vendor/cache/rest-client-1.7.3.gem
|
105
|
+
- vendor/cache/rspec-3.2.0.gem
|
106
|
+
- vendor/cache/rspec-core-3.2.2.gem
|
107
|
+
- vendor/cache/rspec-expectations-3.2.0.gem
|
108
|
+
- vendor/cache/rspec-mocks-3.2.1.gem
|
109
|
+
- vendor/cache/rspec-support-3.2.2.gem
|
110
|
+
- vendor/cache/safe_yaml-1.0.4.gem
|
111
|
+
- vendor/cache/simplecov-0.9.2.gem
|
112
|
+
- vendor/cache/simplecov-html-0.9.0.gem
|
113
|
+
- vendor/cache/slop-3.6.0.gem
|
114
|
+
- vendor/cache/term-ansicolor-1.3.0.gem
|
115
|
+
- vendor/cache/thor-0.19.1.gem
|
116
|
+
- vendor/cache/tins-1.3.5.gem
|
117
|
+
- vendor/cache/webmock-1.17.4.gem
|
118
|
+
homepage:
|
119
|
+
licenses: []
|
120
|
+
metadata: {}
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 1.3.6
|
135
|
+
requirements: []
|
136
|
+
rubygems_version: 3.0.3
|
137
|
+
signing_key:
|
138
|
+
specification_version: 4
|
139
|
+
summary: Heartland Retail API client library
|
140
|
+
test_files: []
|