nerde/enem_solicitacao

View on GitHub
lib/enem_solicitacao.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'mechanize'

# O EnemSolicitacao em Ruby fornece uma forma de automatizar a busca por
# resultados no sistema do Inep: EnemSolicitacao
# (http://sistemasenem.inep.gov.br/EnemSolicitacao).
#
# Para o correto funcionamento, é necessário configurar um login e senha. Estes
# são lidos das variáveis de ambiente ENEM_LOGIN e ENEM_PASSWORD
# respectivamente. Ao utilizar a gem em outro projeto, no entanto, é possível
# sobrescrever este comportamento:
#
#     EnemSolicitacao.user     = 'meulogin'
#     EnemSolicitacao.password = 'minhasenha'
#
# Feito isso, basta utilizar o gateway para fazer as buscas:
#
#     EnemSolicitacao.gateway
#
# Leia a documentação em `EnemSolicitacao::Gateway` para detalhes em como fazer
# as consultas.
module EnemSolicitacao
  VERSION = '0.0.1'

  autoload :Session, 'enem_solicitacao/session'
  autoload :Gateway, 'enem_solicitacao/gateway'

  # Ano de referência padrão. Se não configurado, será utilizado o ano anterior.
  def self.year
    @year ||= Date.today.year - 1
  end

  def self.year=(year)
    @year = year
  end

  # URL do sistema do Inep.
  def self.site
    'http://sistemasenem.inep.gov.br/EnemSolicitacao'
  end

  # Método auxiliar para montar URLs.
  def self.path(path)
    "#{site}#{path}"
  end

  def self.user=(user)
    @user = user
  end

  def self.user
    @user ||= ENV['ENEM_LOGIN']
  end

  def self.password=(password)
    @password = password
  end

  def self.password
    @password ||= ENV['ENEM_PASSWORD']
  end

  # Cria e faz cache de uma sessão para com o site.
  def self.session
    @session ||= Session.new(user, password)
  end

  # Cria e faz cache de um gateway.
  def self.gateway
    @gateway ||= Gateway.new(session)
  end
end