class Gwitch::Region::Asia
Constants
- API_URL
- QUERIES
Public Class Methods
games()
click to toggle source
# File lib/gwitch/region/asia.rb, line 18 def games games = [] uri = URI.parse(API_URL) page = 1 loop do uri.query = URI.encode_www_form(QUERIES.merge(page: page)) result = JSON.parse(uri.read)['result'] total = result['total'] games += result['items'] page += 1 break unless games.size < total end parse(games) end
Private Class Methods
parse(raw)
click to toggle source
# File lib/gwitch/region/asia.rb, line 40 def parse(raw) host = 'https://ec.nintendo.com/JP/ja/titles/' image_host = 'https://img-eshop.cdn.nintendo.net/i/' image_extension = '.jpg' raw.map do |game| modes = [] modes += game['pmode']&.map { |mode| mode.delete_suffix('_MODE') } || [] image_urls = [] image_urls += game['sslurl']&.map { |id| image_host + id + image_extension } if game['sslurl'] image_urls << image_host + game['iurl'] + image_extension if game['iurl'] url = game['nsuid'] ? host + game['nsuid'] : nil { nsuid: game['nsuid'], code: game['icode'], title: game['title'], description: game['text'], categories: game['genre'], maker: game['maker'], player: game['player']&.first, languages: game['lang'], modes: modes, dlcs: game['cnsuid'] || [], region: 'Asia', images: image_urls, url: url, release_at: game['pdate'] } end end