Class: EnemSolicitacao::Gateway

Inherits:
Object
  • Object
show all
Defined in:
lib/enem_solicitacao/gateway.rb

Overview

Esta classe fornece uma interface para interagir com sistema Enem Solicitação. Com ela, é possível buscar resultados de candidatos. Ela pode ser instanciada manualmente da seguinte maneira:

session = EnemSolicitacao::Session.new('login', 'password')
gateway = EnemSolicitacao::Gateway.new(session, ano_referencia)

No entanto, o recomendado é utilizar o objeto “global”:

EnemSolicitacao.gateway

Este último utiliza uma sessão global e a configuração geral de login e senha. Veja a documentação de EnemSolicitacao para maiores detalhes.

Constant Summary collapse

REGISTRY_KIND =
'numeroInscricao'
CPF_KIND =
'cpf'

Instance Method Summary collapse

Constructor Details

#initialize(session, year = EnemSolicitacao.year) ⇒ Gateway

Construtor.

`session`: Sess


22
23
24
25
# File 'lib/enem_solicitacao/gateway.rb', line 22

def initialize(session, year = EnemSolicitacao.year)
  @session = session
  @year    = year
end

Instance Method Details

#last_result(retries: 5) ⇒ Object

Carrega e retorna o conteúdo do resultado da última busca efetuada.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/enem_solicitacao/gateway.rb', line 41

def last_result(retries: 5)
  page = agent.get(EnemSolicitacao.path('/solicitacao/acompanhar'\
    'Solicitacao.seam'))
  table = page.search('table#listaSolicitacaoAtendidas').first
  result = {}
  table.search('tr').each do |tr|
    tds = tr.search('td').to_a
    next if tds.empty?
    fail('Solicitação em Processamento') unless tds[4].text['Fechado']
    result[tds[2].text.strip] = tds[4].search('a').first \
                                      .attributes['href'].value
  end
  agent.get(result.sort.last.last).body.strip
rescue e
  warn e.message
  retries -= 1
  retry if retries > -1
  raise
end

#search_by_cpf(*cpfs) ⇒ Object

Busca resultados pelo CPF. Retorna o conteúdo do arquivo gerado pelo sistema do Inep (formato CSV) em texto puro.



36
37
38
# File 'lib/enem_solicitacao/gateway.rb', line 36

def search_by_cpf(*cpfs)
  request  CPF_KIND, 'cpfDecorate:cpfInput', cpfs.join(';')
end

#search_by_registry(*registries) ⇒ Object

Busca resultados pelo número de inscrição. Retorna o conteúdo do arquivo gerado pelo sistema do Inep (formato CSV) em texto puro.



29
30
31
32
# File 'lib/enem_solicitacao/gateway.rb', line 29

def search_by_registry(*registries)
  request REGISTRY_KIND, 'numerosInscricaoDecorate:numerosInscricaoInput',
          registries.join(';')
end