class Brickset::Api

Public Class Methods

new() click to toggle source
# File lib/brickset/api.rb, line 3
def initialize
  @client = Savon.client(wsdl: Brickset.configuration.wsdl_url, convert_request_keys_to: :none)
  @api_key = Brickset.configuration.api_key
end

Public Instance Methods

check_key() click to toggle source
# File lib/brickset/api.rb, line 69
def check_key
  response = call_api(:check_key)
  response.body.dig(:check_key_response, :check_key_result) == 'OK'
end
collection_totals(user_hash) click to toggle source
# File lib/brickset/api.rb, line 84
def collection_totals(user_hash)
  response = call_api(:get_collection_totals, options: {userHash: user_hash})
  Array.wrap(response.body.dig(:get_collection_totals_response, :get_collection_totals_result))
end
instructions(id) click to toggle source
# File lib/brickset/api.rb, line 79
def instructions(id)
  response = call_api(:get_instructions, options: {setID: id})
  Array.wrap(response.body.dig(:get_instructions_response, :get_instructions_result, :instructions))
end
login(username, password) click to toggle source
# File lib/brickset/api.rb, line 74
def login(username, password)
  response = call_api(:login, options: {username: username, password: password})
  response.body.dig(:login_response, :login_result)
end
minifig_collection(user_hash, query: '', owned: '', wanted: '') click to toggle source
# File lib/brickset/api.rb, line 89
def minifig_collection(user_hash, query: '', owned: '', wanted: '')
  response = call_api(:get_minifig_collection, options: {userHash: user_hash, query: query, owned: owned, wanted: wanted})
  Array.wrap(response.body.dig(:get_minifig_collection_response, :get_minifig_collection_result, :minifig_collection))
end
operations() click to toggle source
# File lib/brickset/api.rb, line 8
def operations
  @client.operations
end
recently_updated(minutes_ago) click to toggle source
# File lib/brickset/api.rb, line 27
def recently_updated(minutes_ago)
  response = call_api(:get_recently_updated_sets, options: {minutesAgo: minutes_ago})
  Array.wrap(response.body.dig(:get_recently_updated_sets_response, :get_recently_updated_sets_result, :sets))
end
set(id, user_hash: '') click to toggle source
# File lib/brickset/api.rb, line 64
def set(id, user_hash: '')
  response = call_api(:get_set, options: {userHash: user_hash, SetID: id})
  response.body.dig(:get_set_response, :get_set_result, :sets)
end
sets(user_hash: '', query: '', theme: '', subtheme: '', set_number: '', year: '', owned: '', wanted: '', order_by: '', page_size: '', page_number: '', user_name: '') click to toggle source
# File lib/brickset/api.rb, line 32
def sets(user_hash: '',
         query: '',
         theme: '',
         subtheme: '',
         set_number: '',
         year: '',
         owned: '',
         wanted: '',
         order_by: '',
         page_size: '',
         page_number: '',
         user_name: '')
  # although the docs say the parameters are optional they must all be there
  options = {
      userHash: user_hash,
      query: query,
      theme: theme,
      subtheme: subtheme,
      setNumber: set_number,
      year: year,
      owned: owned,
      wanted: wanted,
      orderBy: order_by,
      pageSize: page_size,
      pageNumber: page_number,
      userName: user_name
  }

  response = call_api(:get_sets, options: options)
  Array.wrap(response.body.dig(:get_sets_response, :get_sets_result, :sets))
end
subthemes(theme) click to toggle source
# File lib/brickset/api.rb, line 17
def subthemes(theme)
  response = call_api(:get_subthemes, options: {theme: theme})
  Array.wrap(response.body.dig(:get_subthemes_response, :get_subthemes_result, :subthemes))
end
subthemes_for_user(user_hash, theme, owned: '', wanted: '') click to toggle source
# File lib/brickset/api.rb, line 99
def subthemes_for_user(user_hash, theme, owned: '', wanted: '')
  response = call_api(:get_subthemes_for_user, options: {userHash: user_hash, theme: theme, owned: owned, wanted: wanted})
  Array.wrap(response.body.dig(:get_subthemes_for_user_response, :get_subthemes_for_user_result, :subthemes))
end
themes() click to toggle source
# File lib/brickset/api.rb, line 12
def themes
  response = call_api(:get_themes)
  Array.wrap(response.body.dig(:get_themes_response, :get_themes_result, :themes))
end
themes_for_user(user_hash, owned: '', wanted: '') click to toggle source
# File lib/brickset/api.rb, line 94
def themes_for_user(user_hash, owned: '', wanted: '')
  response = call_api(:get_themes_for_user, options: {userHash: user_hash, owned: owned, wanted: wanted})
  Array.wrap(response.body.dig(:get_themes_for_user_response, :get_themes_for_user_result, :themes))
end
years(theme) click to toggle source
# File lib/brickset/api.rb, line 22
def years(theme)
  response = call_api(:get_years, options: {theme: theme})
  Array.wrap(response.body.dig(:get_years_response, :get_years_result, :years))
end
years_for_user(user_hash, theme, owned: '', wanted: '') click to toggle source
# File lib/brickset/api.rb, line 104
def years_for_user(user_hash, theme, owned: '', wanted: '')
  response = call_api(:get_years_for_user, options: {userHash: user_hash, theme: theme, owned: owned, wanted: wanted})
  Array.wrap(response.body.dig(:get_years_for_user_response, :get_years_for_user_result, :years))
end

Private Instance Methods

call_api(method, options: {}) click to toggle source
# File lib/brickset/api.rb, line 111
def call_api(method, options: {})
  @client.call(method, message: options.merge(apiKey: @api_key))
end