class Smogon::API

Constants

ENDPOINT
METAGAME

Public Class Methods

request(what, name, remote = false) click to toggle source
# File lib/smogon/api.rb, line 26
def request(what, name, remote = false)
  name = aliasize(name)

  if remote
    return JSON.parse(req(
      URI(ENDPOINT + what.to_s),
      { gen: METAGAME, alias: name }
    ))
  end

  unless @_basics
    @_basics = JSON.parse(req(
      URI(ENDPOINT + 'basics'),
      { gen: METAGAME }
    ))
  end

  @_basics[what.to_s].find do |x|
    aliasize(x['name']) == name
  end
end
using_metagame(metagame, &block) click to toggle source
# File lib/smogon/api.rb, line 48
def using_metagame(metagame, &block)
  default_metagame = METAGAME.dup
  METAGAME.replace aliasize(metagame)
  instance_eval(&block).tap do
    METAGAME.replace default_metagame
  end
end

Private Class Methods

aliasize(string) click to toggle source
# File lib/smogon/api.rb, line 58
def aliasize(string)
  string.downcase.gsub(' ', '_').gsub(/[^a-z0-9_\-]/i, '')
end
req(uri, body) click to toggle source
# File lib/smogon/api.rb, line 62
def req(uri, body)
  request = Net::HTTP::Post.new(uri)
  request.body = body.to_json
  request.content_type = 'application/json; charset=utf-8'

  Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(request)
  end.body
end