tcg-player-sdk 0.1.3 → 0.1.4
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 +4 -4
- data/lib/tcg-player-sdk/bearer_token.rb +10 -0
- data/lib/tcg-player-sdk/manifest.rb +38 -0
- data/lib/tcg-player-sdk/pokemon.rb +7 -0
- data/lib/tcg-player-sdk/product_price_list.rb +5 -6
- data/lib/tcg-player-sdk/tcg_player_sdk.rb +46 -6
- data/lib/tcg-player-sdk.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30c00bca03558c4b683d20e3ffec48dc5e843fdd5c7170c3410014ad3e2da619
|
4
|
+
data.tar.gz: f5a805adc5ea41c1d09d1d0c9e62c72ad6fa5c8bd147e2cb1a24d2eeca1084f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b24bdcb6d5a30ba9e1ec9bb682af8456331b0d74e418d734237699fbce048ffee172b2d15511f85c34b791fde8435b9ff84b37c5a11a2d6dea279f7a57e8ed1
|
7
|
+
data.tar.gz: d77e338ace8d2605deb9c3c170e75078afea999cdf04f16c7548963d92ef63316b3060089b2540a33fb37c9875f3a991d51a886b6bcd121295993842cb44efe8
|
@@ -17,4 +17,14 @@ class TCGPlayerSDK::BearerToken
|
|
17
17
|
def to_s
|
18
18
|
ap self, indent: -2
|
19
19
|
end
|
20
|
+
|
21
|
+
def to_json
|
22
|
+
h = {
|
23
|
+
access_token: token,
|
24
|
+
token_type: 'bearer',
|
25
|
+
expires_in: expires_in,
|
26
|
+
'.issued' => issued.to_s,
|
27
|
+
'.expires' => expiration.to_s,
|
28
|
+
}.to_json
|
29
|
+
end
|
20
30
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Add some shortcuts and helpers to parse the manifest
|
2
|
+
class TCGPlayerSDK::Manifest < TCGPlayerSDK::ResponseStruct
|
3
|
+
|
4
|
+
def initialize(hash = nil)
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
##
|
9
|
+
# Pick out the sorting struct from the response
|
10
|
+
#
|
11
|
+
# @return [Array<TCGPlayerSDK::ResponseStruct>]
|
12
|
+
def sorting
|
13
|
+
if(self.results && self.results.is_a?(Array))
|
14
|
+
@sorting ||= self.results.first.sorting
|
15
|
+
end
|
16
|
+
|
17
|
+
return @sorting
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# @return [Array<String>] The actual values that are legitimate inputs to search query's sort field
|
22
|
+
def sort_values
|
23
|
+
_sorting = sorting || []
|
24
|
+
@sort_values ||= _sorting.map(&:value)
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Pick out the filters struct from the response
|
29
|
+
#
|
30
|
+
# @return [Array<TCGPlayerSDK::ResponseStruct>]
|
31
|
+
def filters
|
32
|
+
if(self.results && self.results.is_a?(Array))
|
33
|
+
@filters ||= self.results.first.filters
|
34
|
+
end
|
35
|
+
|
36
|
+
return @filters
|
37
|
+
end
|
38
|
+
end
|
@@ -25,6 +25,13 @@ class TCGPlayerSDK::Pokemon
|
|
25
25
|
@set_filter ||= @manifest.results.first.filters.select{|f| f.name == 'SetName'}.first
|
26
26
|
end
|
27
27
|
|
28
|
+
##
|
29
|
+
# @return [Array<TCGPlayerSDK::ResponseStruct>] Response struct with keys :value and :text, which correspond to
|
30
|
+
# the available ways to sort search data. Set :sort in your search parameters to one of the returned :value
|
31
|
+
def sorting
|
32
|
+
@sorting ||= @manifest.results.first.sorting
|
33
|
+
end
|
34
|
+
|
28
35
|
##
|
29
36
|
# Returns the TCGPlayerSDK filter item corresponding to the input set
|
30
37
|
#
|
@@ -1,16 +1,15 @@
|
|
1
|
-
class TCGPlayerSDK::ProductPriceList
|
2
|
-
attr_accessor :response
|
1
|
+
class TCGPlayerSDK::ProductPriceList < TCGPlayerSDK::ResponseStruct
|
3
2
|
|
4
3
|
##
|
5
4
|
# Group prices by product ID. This will set
|
6
5
|
# prices to an empty hash if there was an error. Check response.errors for details about any errors.
|
7
6
|
#
|
8
7
|
# @param _response[TCGPlayerSDK::ResponseStruct] the result of calling TCGPlayerAPI#product_pricing
|
9
|
-
def initialize(
|
10
|
-
|
8
|
+
def initialize(hash = {})
|
9
|
+
super
|
11
10
|
|
12
|
-
if(
|
13
|
-
@prices =
|
11
|
+
if(self.success && self.results)
|
12
|
+
@prices = self.results.map{|r| TCGPlayerSDK::ProductPrice.new(r)}.group_by{|r| r.productId}
|
14
13
|
else
|
15
14
|
@prices = {}
|
16
15
|
end
|
@@ -115,28 +115,68 @@ class TCGPlayerSDK
|
|
115
115
|
#
|
116
116
|
# @return [TCGPlayerSDK::ResponseStruct]
|
117
117
|
def category_search_manifest(id)
|
118
|
-
query("#{CATEGORIES_URL}/#{id}/search/manifest")
|
118
|
+
Manifest.new(query("#{CATEGORIES_URL}/#{id}/search/manifest"))
|
119
119
|
end
|
120
120
|
|
121
121
|
# https://docs.tcgplayer.com/reference/catalog_searchcategory
|
122
122
|
#
|
123
|
+
# @param id[String] The category ID to search through
|
124
|
+
# @param params[Hash] Put your additional search terms here:
|
125
|
+
# - sort: One of the available sort filters see manifest.results.first.sorting
|
126
|
+
# - limit: Cap the number of results to this limit
|
127
|
+
# - offset: Used with :limit to return a limited number of results in an arbitrary location. i.e. for pagination
|
128
|
+
# - filters[Array<Hash>] An array of filters as described by manifest.results.first.filters. Use the following format for Hash in the filters array
|
129
|
+
# - name[String]: Name of one of the filters from the manifest
|
130
|
+
# - values[Array<String>]: Specify which values to filter on
|
131
|
+
#
|
132
|
+
# params = {
|
133
|
+
# sort: 'ProductName ASC',
|
134
|
+
# limit: 10,
|
135
|
+
# offset: 0,
|
136
|
+
# filters: [ {
|
137
|
+
# name: 'ProductName',
|
138
|
+
# values: ['Alakazam']
|
139
|
+
# }]
|
140
|
+
# }
|
141
|
+
#
|
142
|
+
# results = tcg.category_search_products(3, params)
|
143
|
+
# results.results #=> [42444, 42346, 83496, 106996, 83501, 83499, 83497, 83500, 83498, 180715]
|
144
|
+
#
|
145
|
+
# # Do something with each product ID... will automatically fetch new results
|
146
|
+
# all_ids = results.map{|r| r} #=> [42444, 42346, 83496, 106996, 83501, 83499, 83497, 83500, 83498, 180715, 83503, 83504, 117512, 117889, 117896, 117863, 83502, 226606, 228981, 228980, 228979, 251560, 84559, 84560, 118332, 117515, 117890, 88866]
|
147
|
+
#
|
123
148
|
# @return [TCGPlayerSDK::ResponseStruct]
|
124
149
|
def category_search_products(id, params = {})
|
125
150
|
search_params = {post: true}.merge(params)
|
126
151
|
query("#{CATEGORIES_URL}/#{id}/search", search_params)
|
127
152
|
end
|
128
153
|
|
129
|
-
|
130
|
-
#
|
131
|
-
#
|
154
|
+
##
|
155
|
+
# https://docs.tcgplayer.com/reference/catalog_getproduct-1
|
156
|
+
#
|
157
|
+
def product_details(_ids, params = {})
|
158
|
+
ids = id_list(_ids)
|
159
|
+
query("#{CATALOG_URL}/products/#{ids}", params)
|
160
|
+
end
|
132
161
|
|
133
162
|
##
|
134
163
|
# Accessor to https://docs.tcgplayer.com/reference/pricing_getproductprices-1
|
135
164
|
#
|
136
|
-
# @param
|
165
|
+
# @param _ids An array of product IDs to query
|
137
166
|
# @return [TCGPlayerSDK::ProductPriceList]
|
138
167
|
def product_pricing(_ids)
|
139
|
-
ids =
|
168
|
+
ids = id_list(_ids)
|
140
169
|
TCGPlayerSDK::ProductPriceList.new(query("#{PRICING_URL}/product/#{ids}"))
|
141
170
|
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
##
|
175
|
+
# Sanitize an array or string of ids to be compatible with the comma-separated values that the API expects
|
176
|
+
#
|
177
|
+
# @param value Accepts either an Array or String to convert to the API-friendly formatting
|
178
|
+
# @return [String] ids separated by comma
|
179
|
+
def id_list(value)
|
180
|
+
value.is_a?(Array) ? value.join(',') : value
|
181
|
+
end
|
142
182
|
end
|
data/lib/tcg-player-sdk.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tcg-player-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carl Svensson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -62,6 +62,7 @@ extra_rdoc_files: []
|
|
62
62
|
files:
|
63
63
|
- lib/tcg-player-sdk.rb
|
64
64
|
- lib/tcg-player-sdk/bearer_token.rb
|
65
|
+
- lib/tcg-player-sdk/manifest.rb
|
65
66
|
- lib/tcg-player-sdk/pokemon.rb
|
66
67
|
- lib/tcg-player-sdk/product_price_list.rb
|
67
68
|
- lib/tcg-player-sdk/response_struct.rb
|