Skip to content

Commit 4f6e609

Browse files
committed
Add new market endpoints
Condenses market prices and history into a single call, and allows the user to search for multiple item IDs, across multiple servers, or across an entire data center. Also allows the results to be filtered using max history and columns. Removes the deprecated endpoint for looking up market categories by server.
1 parent ea4bcaa commit 4f6e609

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

lib/xivapi/request.rb

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -61,25 +61,25 @@ def servers(group: false)
6161
request(self, endpoint)
6262
end
6363

64-
# @param server [String] Server to retrieve the market for
65-
# @param id [Integer] ID of the item to price
66-
# @return [OpenStruct] Maret price results
67-
def market_price(server: nil, id: nil)
68-
request(self, "market/#{server}/items/#{id}")
69-
end
70-
71-
# @param server [String] Server to retrieve the market for
72-
# @param id [Integer] ID of the item to price
73-
# @return [OpenStruct] Market history results
74-
def market_history(server: nil, id: nil)
75-
request(self, "market/#{server}/items/#{id}/history")
76-
end
77-
78-
# @param server [String] Server to retrieve the market for
79-
# @param id [Integer] ID of the category to retrieve
80-
# @return [Array<OpenStruct>] Market category results
81-
def market_category(server: nil, id: nil)
82-
request(self, "market/#{server}/category/#{id}")
64+
# @param ids [Integer, Array<Integer>] ID(s) of the item(s) to look up
65+
# @param servers [String, Array<String>] Server(s) to retrieve the market for
66+
# @param data_center [String] Data center to retrieve the market for
67+
# @param max_history [Integer] The maximum amount of history to retrieve
68+
# @param columns [String, Array <String>] One or more columns to limit results to
69+
# @return [OpenStruct] Market price results
70+
def market(ids: [], servers: [], data_center: nil, max_history: nil, columns: [])
71+
ids, server_names = [*ids], [*servers]
72+
params = { max_history: max_history, columns: [*columns].join(',') }
73+
74+
if ids.size > 1
75+
params.merge!(ids: ids.join(','), dc: data_center, servers: server_names.join(','))
76+
request(self, 'market/items', params)
77+
elsif data_center || server_names.size > 1 || server_names[0].match?(',')
78+
params.merge!(dc: data_center, servers: server_names.join(','))
79+
request(self, "market/item/#{ids.first}", params)
80+
else
81+
request(self, "market/#{server_names.first}/item/#{ids.first}", params)
82+
end
8383
end
8484

8585
# @return [Array<OpenStruct>] List of Market categories

0 commit comments

Comments
 (0)