gun_broker 0.7.2 → 0.8.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: 8ae985a2b69996d2bb39e0abfa56dbcc91b085c2
4
- data.tar.gz: c69757e524eb002b6f3f54f4ad57197cdd4a6c7a
3
+ metadata.gz: 5d2b22b6ae3a52a176f7191944c75b34f1d1fe11
4
+ data.tar.gz: bd1e881cd614343cb8a441420b751ce7e8ce9314
5
5
  SHA512:
6
- metadata.gz: 07f0b8d62dc2efdf80e7f68026d28e5c863e919df3a6256f8303f4e690133b28d54495bd7dc3f09d707a70f4770ca65aeb1227fb6d3065ceb69c980c3218963d
7
- data.tar.gz: 12f1546ff053d27b9d048f8b89d51e7f97989b8af1799428bf56f87e6e9ab96e089eca395edc6a02207f6afec4a1bee8d55d545eea028d04291c761bc6823609
6
+ metadata.gz: 46ec9c38357f0a3e1daccfd5d16049b4b9aa610a253c6bd4a65672649b1f1b013593cff4b97c96e0920807d161a0be84c320a6b3ecf961bc4cd870c19693328c
7
+ data.tar.gz: b9d604c7aca3055a5e2a1347c7657dcebd685fa6df3135810a931fe542ff097780edf13d28c35fa4a92dc48dabc4421c7d572328829a451e8a76a93a6f7263d8
data/lib/gun_broker.rb CHANGED
@@ -10,6 +10,21 @@ require 'gun_broker/user'
10
10
 
11
11
  module GunBroker
12
12
 
13
+ WEB_URL = "https://www.gunbroker.com"
14
+ WEB_URL_SANDBOX = "https://www.sandbox.gunbroker.com"
15
+
16
+ # Sets the developer key obtained from GunBroker.com.
17
+ # @param api [Boolean] whether to use api endpoint or public website endpoint
18
+ def self.base_url(api: true)
19
+ if sandbox?
20
+ return API::ROOT_URL_SANDBOX if api
21
+ WEB_URL_SANDBOX
22
+ else
23
+ return API::ROOT_URL if api
24
+ WEB_URL
25
+ end
26
+ end
27
+
13
28
  # Sets the developer key obtained from GunBroker.com.
14
29
  # @param dev_key [String]
15
30
  def self.dev_key=(dev_key)
@@ -36,6 +51,11 @@ module GunBroker
36
51
  defined?(@@sandbox) ? @@sandbox : false
37
52
  end
38
53
 
54
+ # An alias to {.sandbox} method
55
+ def self.sandbox?
56
+ sandbox
57
+ end
58
+
39
59
  # Returns a hash containing the time on GunBroker's servers in UTC
40
60
  # and the current version of the GunBroker API.
41
61
  #
@@ -96,27 +96,35 @@ module GunBroker
96
96
  end
97
97
 
98
98
  # Returns Items that are currently selling.
99
+ # @param options [Hash] {ItemID=>ItemID}.
99
100
  # @note {API#get! GET} /Items
100
101
  # @raise [GunBroker::Error::NotAuthorized] If the {User#token} isn't valid.
101
102
  # @raise [GunBroker::Error::RequestError] If there's an issue with the request (usually a `5xx` response).
102
103
  # @return [Array<Item>]
103
- def selling
104
- response = GunBroker::API.get('/Items', {
105
- 'SellerName' => @user.username,
104
+ def selling(options = {})
105
+ parameters = {
106
+ 'ItemID' => (options[:item_id] || options["ItemID"]),
107
+ 'PageSize' => GunBroker::API::PAGE_SIZE,
108
+ 'SellerName' => @user.username,
106
109
  'SellingStatus' => SELLING_STATUS[:selling],
107
- 'PageSize' => GunBroker::API::PAGE_SIZE
108
- }, token_header(@user.token))
110
+ }.delete_if { |k, v| v.nil? }
111
+
112
+ response = GunBroker::API.get('/Items', parameters, token_header(@user.token))
109
113
  items_from_results(response['results'])
110
114
  end
111
115
 
112
116
  # Items the User has sold.
117
+ # @param options [Hash] {ItemID=>ItemID}.
113
118
  # @note {API#get! GET} /ItemsSold
114
119
  # @raise (see #all)
115
120
  # @return [Array<Item>]
116
- def sold
117
- response = GunBroker::API.get('/ItemsSold', {
118
- 'PageSize' => GunBroker::API::PAGE_SIZE
119
- }, token_header(@user.token))
121
+ def sold(options = {})
122
+ parameters = {
123
+ 'PageSize' => GunBroker::API::PAGE_SIZE,
124
+ 'ItemID' => (options[:item_id] || options["ItemID"]),
125
+ }.delete_if { |k, v| v.nil? }
126
+
127
+ response = GunBroker::API.get('/ItemsSold', parameters, token_header(@user.token))
120
128
  items_from_results(response['results'])
121
129
  end
122
130
 
@@ -124,10 +132,13 @@ module GunBroker
124
132
  # @note {API#get! GET} /ItemsUnsold
125
133
  # @raise (see #all)
126
134
  # @return [Array<Item>]
127
- def unsold
128
- response = GunBroker::API.get('/ItemsUnsold', {
129
- 'PageSize' => GunBroker::API::PAGE_SIZE
130
- }, token_header(@user.token))
135
+ def unsold(options = {})
136
+ parameters = {
137
+ 'PageSize' => GunBroker::API::PAGE_SIZE,
138
+ 'ItemID' => (options[:item_id] || options["ItemID"]),
139
+ }.delete_if { |k, v| v.nil? }
140
+
141
+ response = GunBroker::API.get('/ItemsUnsold', parameters, token_header(@user.token))
131
142
  items_from_results(response['results'])
132
143
  end
133
144
 
@@ -1,3 +1,3 @@
1
1
  module GunBroker
2
- VERSION = "0.7.2"
2
+ VERSION = "0.8.0"
3
3
  end
@@ -0,0 +1 @@
1
+ {"count":1,"pageIndex":1,"pageSize":25,"results":[{"itemID":465370483,"bids":0,"eligibleForImmediateCheckout":false,"endingDate":"2015-02-25T15:37:19Z","isFeaturedItem":false,"isFixedPrice":true,"isHighlighted":false,"isShowCaseItem":false,"isTitleBoldface":false,"hasBuyNow":false,"hasColor":false,"hasQuickLook":false,"hasPictures":true,"hasReserve":false,"hasReserveBeenMet":false,"highBidderID":0,"quantity":3,"price":49.9900,"serialNumber":"","sku":"","subTitle":"","thumbnailURL":"http://pics.gunbroker.com/GB/465370000/465370483/thumb.jpg","timeLeft":"P26DT18H52M28S","title":"Magpul STR Carbine Stock Mil Spec Black","titleColor":"#000000","links":[{"rel":"self","href":"https://api.gunbroker.com/v1/items/465370483","verb":"GET","title":"465370483"}]}],"categoryCounts":[{"id":3032,"name":"Rifle Stocks","count":1}],"links":[{"rel":"share","href":"http://www.gunbroker.com/All/BI.aspx?IncludeSellers=2266088&PageSize=25","verb":"GET","title":"Check out what I found on GunBroker.com!"}]}
@@ -200,6 +200,22 @@ describe GunBroker::User::ItemsDelegate do
200
200
  expect(delegate.sold).not_to be_empty
201
201
  expect(delegate.sold.first).to be_a(GunBroker::Item)
202
202
  end
203
+
204
+ it 'returns one sold item when passed an `ItemID` option' do
205
+ stub_request(:get, endpoint)
206
+ .with(
207
+ headers: headers('X-AccessToken' => token),
208
+ query: {
209
+ 'PageSize' => GunBroker::API::PAGE_SIZE,
210
+ 'ItemID' => '123'
211
+ }
212
+ )
213
+ .to_return(body: response_fixture('item_id'))
214
+
215
+ user = GunBroker::User.new(username, token: token)
216
+ expect(delegate.sold(item_id: 123)).not_to be_empty
217
+ expect(delegate.sold(item_id: 123).first).to be_a(GunBroker::Item)
218
+ end
203
219
  end
204
220
 
205
221
  context 'on failure' do
@@ -6,6 +6,24 @@ describe GunBroker do
6
6
  expect(GunBroker::VERSION).to be_a(String)
7
7
  end
8
8
 
9
+ context '.base_url' do
10
+ context 'in sandbox mode' do
11
+ it 'should return the proper sandbox api url' do
12
+ GunBroker.sandbox = false
13
+ expect(GunBroker.base_url).to eq("https://api.gunbroker.com/v1")
14
+ expect(GunBroker.base_url(api: false)).to eq("https://www.gunbroker.com")
15
+ end
16
+ end
17
+
18
+ context 'in live mode' do
19
+ it 'should return the proper api url' do
20
+ GunBroker.sandbox = true
21
+ expect(GunBroker.base_url).to eq("https://api.sandbox.gunbroker.com/v1")
22
+ expect(GunBroker.base_url(api: false)).to eq("https://www.sandbox.gunbroker.com")
23
+ end
24
+ end
25
+ end
26
+
9
27
  context '.dev_key' do
10
28
  let(:key) { 'foo' }
11
29
 
@@ -26,13 +44,10 @@ describe GunBroker do
26
44
  end
27
45
 
28
46
  context '.sandbox' do
29
- it 'defaults to false' do
30
- expect(GunBroker.sandbox).to eq(false)
31
- end
32
-
33
47
  it 'sets @@sandbox to true' do
34
48
  GunBroker.sandbox = true
35
49
  expect(GunBroker.sandbox).to eq(true)
50
+ expect(GunBroker.sandbox?).to eq(true)
36
51
  end
37
52
  end
38
53
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gun_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Campbell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-26 00:00:00.000000000 Z
11
+ date: 2016-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -132,6 +132,7 @@ files:
132
132
  - spec/fixtures/feedback-summary.json
133
133
  - spec/fixtures/feedback.json
134
134
  - spec/fixtures/item.json
135
+ - spec/fixtures/item_id.json
135
136
  - spec/fixtures/items.json
136
137
  - spec/fixtures/not_authorized.json
137
138
  - spec/fixtures/test.json
@@ -183,6 +184,7 @@ test_files:
183
184
  - spec/fixtures/feedback-summary.json
184
185
  - spec/fixtures/feedback.json
185
186
  - spec/fixtures/item.json
187
+ - spec/fixtures/item_id.json
186
188
  - spec/fixtures/items.json
187
189
  - spec/fixtures/not_authorized.json
188
190
  - spec/fixtures/test.json