Module: ItemEndpoints

Includes:
Constants, FormData, ResponseFormatter
Included in:
Auciel
Defined in:
lib/endpoints/item.rb

Overview

get item by id and other item-related methods

Constant Summary collapse

GET_ITEM_BY_ID =
{
  method: 'get',
  path: '/item/:id',
  responder: item_by_id,
  opts: { content_type: 'application/json' }
}.values.freeze
GET_ITEM_BY_CATEGORY =
{
  method: 'get',
  path: '/item/:cat/:sub',
  responder: items_by_category,
  opts: { content_type: 'application/json' }
}.values.freeze

Constants included from ApiErrors

ApiErrors::UNEXPECTED_BLACK_DESERT_RESPONSE

Constants included from Constants

Constants::COOKIE, Constants::MARKET_HOT_LIST, Constants::MARKET_SEARCH_LIST, Constants::MARKET_SELL_BUY_INFO, Constants::MARKET_SUB_LIST, Constants::MARKET_WAIT_LIST, Constants::REQUEST_OPTS, Constants::ROOT_URL, Constants::RVT, Constants::WORLD_MARKET_LIST

Class Method Summary collapse

Methods included from ResponseFormatter

format_cat_response, format_hot_response, format_item_response, format_price_list_response, format_search_response, format_waitlist_response, try_error

Methods included from FormData

item_by_cat_data, item_by_id_data, price_list_data, search_item_by_text_data

Class Method Details

.item_by_idObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/endpoints/item.rb', line 51

def self.item_by_id
  lambda do |req|
    item_id = req[:vars]['id']
    uri = URI "#{Constants::ROOT_URL}#{Constants::MARKET_SUB_LIST}"
    form = FormData.item_by_id_data item_id
    res = send_post_request uri, form

    ResponseFormatter.format_item_response(respond_if_available(res))
  end
end

.items_by_categoryObject



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/endpoints/item.rb', line 62

def self.items_by_category
  lambda do |req|
    item_cat = req[:vars]['cat']
    item_sub = req[:vars]['sub']
    uri = URI "#{Constants::ROOT_URL}#{Constants::WORLD_MARKET_LIST}"
    form = FormData.item_by_cat_data item_cat, item_sub
    res = send_post_request uri, form

    ResponseFormatter.format_cat_response(respond_if_available(res))
  end
end

.respond_if_available(res) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/endpoints/item.rb', line 42

def self.respond_if_available(res)
  return res.body if res.body

  {
    error: 'invalid response from the black desert api.',
    response: res
  }.to_json
end

.send_post_request(uri, data) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/endpoints/item.rb', line 32

def self.send_post_request(uri, data)
  uri_params = URI.encode_www_form data

  HTTParty.post(
    uri,
    body: uri_params,
    headers: Constants::REQUEST_OPTS[:headers]
  )
end