Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agilizar a primeira sincronização com o "Baixar tudo" #3

Open
yanmarques opened this issue Oct 13, 2019 · 0 comments
Open

Agilizar a primeira sincronização com o "Baixar tudo" #3

yanmarques opened this issue Oct 13, 2019 · 0 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@yanmarques
Copy link
Collaborator

Descrição

Na primeira vez em que o bot executar, todos os materiais serão baixados, pois o sincronizador não irá encontrar um arquivo local correspondente. É extremamente não-performático baixar um arquivo por vez, já que serão todos, principalmente pelo fato de o EVA disponibilizar um zip com todos os arquivos.

Problemas

Como o sincronizador sabe que não deve baixar um arquivo? Ele irá tentar encontrar o nome do arquivo na URL, e buscar esse arquivo localmente.
Caso a URL não tenha especificado o nome do arquivo (sim é possível) então ele irá baixa-lo e buscar o nome do arquivo pelo header de resposta "Content-Disposition".

De início poderíamos usar a estratégia de, se todos os arquivos que estão para download não estão presentes localmente, então baixe o zip e extraia no diretório especificado. Porém isso nos leva a:

  • se apenas 1 arquivo está presente no diretório local, ele não irá cair na regra e baixará os n-1 arquivos separados.

E isso serve para 2, 3, ... assim por diante. O mais indicado seria uma regra baseada no total de arquivos, e calcular até que ponto é interessante baixar tudo.

Um outro problema está relacionado ao que foi dito anteriormente sobre URLs que não possuem o nome do arquivo. Nesse caso teríamos que descobrir o nome do arquivo baixando os headers de resposta da URL, no caso enviar um request com o método HEAD. Não tenho conhecimento sobre a forma como o sistema EVA lida com requisições desse tipo.

@yanmarques yanmarques added enhancement New feature or request good first issue Good for newcomers labels Oct 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

1 participant