class FactorioMods::Api::ModPortal

Information taken from wiki.factorio.com/Mod_portal_API

Constants

BASE_URL

Public Class Methods

all_mods(data = {}) click to toggle source
# File lib/factorio_mods/api/mod_portal.rb, line 8
def self.all_mods(data = {})
  paginate = data.delete :paginate

  uri = URI(BASE_URL + '/api/mods')
  uri.query = data.map { |k, v| "#{k}=#{v}" }.join '&'

  data = JSON.parse(Net::HTTP.get(uri), symbolize_names: true)
  puts data
  results = data.fetch(:results).map { |mod| FactorioMods::Mod.new mod }
  while paginate && data[:pagination][:links][:next]
    uri = URI(data[:pagination][:links][:next])
    data = JSON.parse(Net::HTTP.get(uri), symbolize_names: true)
    results.concat(data.fetch(:results).map { |mod| FactorioMods::Mod.new mod })
  end

  results
end
mod(name) click to toggle source
# File lib/factorio_mods/api/mod_portal.rb, line 26
def self.mod(name)
  uri = URI(BASE_URL + '/api/mods/' + name)
  FactorioMods::Mod.new JSON.parse(Net::HTTP.get(uri), symbolize_names: true)
end
mods(*names) click to toggle source
# File lib/factorio_mods/api/mod_portal.rb, line 31
def self.mods(*names)
  uri = URI(BASE_URL + '/api/mods')
  uri.query = 'page_size=max&' + names.map { |mod| "namelist=#{mod}" }.join('&')
  JSON.parse(Net::HTTP.get(uri), symbolize_names: true)
      .fetch(:results)
      .map { |mod| FactorioMods::Mod.new mod }
end
raw_mod(name) click to toggle source
# File lib/factorio_mods/api/mod_portal.rb, line 39
def self.raw_mod(name)
  uri = URI(BASE_URL + '/api/mods/' + name)
  JSON.parse(Net::HTTP.get(uri), symbolize_names: true)
end