Data Versão Descrição Autor
11/05/2019 0.0.1 Adição de FormActions no conteúdo Gabriela, Iuri, Pedro, Gustavo, André

UVa e uHunt

   O UVa é um juiz online onde é possível encontrar diversas questões de maratonas de programação, como as maratonas do ICPC. Ele possui uma ferramenta complementar que funciona como interface para que o usuário possa ver suas estatíticas e visualizar os problemas de forma mais ordenada chamada uHunt.

API uHunt

   Durante os estudos de como integrar o UVa ao bot foi validado que a API do uHunt seria o melhor modo, isto se dá ao fato de que ela possui ferramentas como conversão de username para id, listar as submissões de um usuário, entre outras funções que seriam úteis para nosso projeto.

   Todos os dados da API do uHunt podem ser vista aqui. Apesar da documentação não ter uma interface agradável, suas descrições e explicações não são mal desenvolvidas e sua utilização, devido à isso, é simples.

   No entanto, o uHunt não possui as funcionalidades de login e submissão de exercícios, nem em seu site, nem na API, o que nos levou a estudar o próprio site do UVa.

WebService UVa

   Para conseguir utilizar o site do UVa e fazer as ações citadas foi necessário acessâ-lo de forma direta, a partir do request do site em um código python.

Acessando o UVa

   Para fazer o acesso do site foi criado uma session para que, desse modo, fosse possível realizar o post do login e após o post da submissão. Nessa sessão foi feito o get da url do site inicial do UVa. Após definir a sessão base, começamos a trabalhar nos posts.

Realizando o Login    Para realizar o login foi necessário gerar uma soup do texto adquirido do request da página inicial para que, a partir dele, pudéssemos ter acesso ao formulário encontrado na página e, desse modo, adquirir os parâmetros e a url necessários para realizar o login.

  • Url para login: 'https://uva.onlinejudge.org/index.php?option=com_comprofiler&task=login'
  • Parâmetros: 'username' e 'passwd'

Realizando a Submissão de exercícios    A submissão de exercícios não foi muito diferente do login, tendo ,em sua maioria, mudanças na url para gerar a soup e os parâmetros passados após o processamento da mesma.

  • Url para soup: 'https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=25&page=submit_problem&problemid=' + id_do_problema
  • Url para submissão: 'index.php?option=com_onlinejudge&Itemid=25&page=save_submission'
  • Parâmetros: 'problemid', 'category', 'language', 'codeupl' e 'code'