Skip to content

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

Description

@yanmarques

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions