class Gwitch::Region::Europe

Constants

API_URL
MAX_ROWS
QUERIES

((playable_on_txt:“HAC”)) means platform is nintendo switch

RowsTooSmallError

Public Class Methods

games() click to toggle source
# File lib/gwitch/region/europe.rb, line 24
def games
  uri = URI.parse(API_URL)
  uri.query = URI.encode_www_form(QUERIES)
  response = JSON.parse(uri.read)['response']

  raise RowsTooSmallError if response['numFound'] > MAX_ROWS

  parse(response['docs'])
end

Private Class Methods

parse(raw) click to toggle source
# File lib/gwitch/region/europe.rb, line 36
def parse(raw)
  host = 'https://www.nintendo.co.uk'
  schema = 'https:'

  raw.map do |game|
    code = game['product_code_txt']&.first
    code = code[4..8] if code

    modes = []
    modes << 'TV' if game['play_mode_tv_mode_b']
    modes << 'TABLETOP' if game['play_mode_tabletop_mode_b']
    modes << 'HANDHELD' if game['play_mode_handheld_mode_b']

    url = game['url'] ? host + game['url'] : nil

    {
      nsuid: game['nsuid_txt'] || [],
      code: code,
      title: game['title'],
      description: game['excerpt'],
      categories: game['pretty_game_categories_txt'] || [],
      maker: game['publisher'],
      player: game['players_to'],
      languages: game['language_availability']&.first&.split(',') || [],
      modes: modes,
      cloud_save: game['cloud_saves_b'],
      region: 'Europe',
      images: [
        schema + game['image_url'],
        schema + game['image_url_sq_s'],
        schema + game['image_url_h2x1_s'],
        schema + game['gift_finder_carousel_image_url_s'],
        schema + game['gift_finder_detail_page_image_url_s'],
        schema + game['gift_finder_wishlist_image_url_s'],
        schema + game['wishlist_email_square_image_url_s'],
        schema + game['wishlist_email_banner460w_image_url_s'],
        schema + game['wishlist_email_banner640w_image_url_s']
      ],
      url: url,
      release_at: game['dates_released_dts']&.first
    }
  end
end