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

INclui content-type ao subir arquivo para minio #58

Merged
merged 2 commits into from
Oct 25, 2021

Conversation

robertatakenaka
Copy link
Member

@robertatakenaka robertatakenaka commented Oct 22, 2021

O que esse PR faz?

Fale sobre o propósito do pull request como por exemplo: quais problemas ele soluciona ou quais features ele adiciona.

Onde a revisão poderia começar?

Indique o caminho do arquivo e o arquivo onde o revisor deve iniciar a leitura do código.

Como este poderia ser testado manualmente?

Estabeleça os passos necessários para que a funcionalidade seja testada manualmente pelo revisor.

Algum cenário de contexto que queira dar?

Indique um contexto onde as modificações se fazem necessárias ou passe informações que contextualizam
o revisor a fim de facilitar o entendimento da funcionalidade.

Screenshots

Quando aplicável e se fizer possível adicione screenshots que remetem a situação gráfica do problema que o pull request resolve.

Quais são tickets relevantes?

#51

Referências

Indique as referências utilizadas para a elaboração do pull request.

Copy link
Contributor

@rafaelpezzuto rafaelpezzuto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@robertatakenaka Para funcionar corretamente eu precisei trocar a biblioteca para python-magic. Caso opte por fazer essa "correção", precisa só fazer o seguite:

  1. inserir python-magic em requirements.txt e em setup.py
  2. import magic em minio.py
  3. em minio.py substituir return guess_type(file_path) or read_mime_types(file_path) por return magic.from_file(file_path, mime=True)

Fiz mais explicações no próprio commit.

Também, para arquivos XML, o python-magic entrega mimetype text/xml e a lib atual está entregando application/xml.

Fiz alguns testes subindo para minio usando a interface, e de fato, ele está capaz de pré-visualizar imagens, etc...

@@ -12,6 +13,10 @@
logger = logging.getLogger(__name__)


def get_mimetype(file_path):
return read_mime_types(file_path) or guess_type(file_path)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@robertatakenaka. testei aqui e não tem funcionado neste ponto, porque:

  1. Ao chamar get_mimetypes(file_path), em que file_path é um arquivo XML gravado em /tmp pela biblioteca DSM, é retornado um dicionário com o seguite conteúdo, por exemplo:
{'.js': 'application/javascript', '.mjs': 'application/javascript', '.json': 'application/json', '.webmanifest': 'application/manifest+json', '.doc': 'application/msword', '.dot': 'application/msword', '.wiz': 'application/msword', '.bin': 'application/octet-stream', '.a': '<article', '.dll': 'application/octet-stream', '.exe': 'application/octet-stream', '.o': '<article', '.obj': 'application/octet-stream', '.so': 'application/octet-stream', ...}

Ao chamar get_mimetypes(file_path) em que file_path é um XML criado por outra aplicação é retornada uma tupla ('application/xml', None).

Ambos não servem e causam erro ao registrar o conteúdo no MinIO (que espera um string e não uma tupla). Para funcionar, eu precisei fazer apena usar guess_type como em guess_type(file_path)[0], que é uma string com o tipo identificado: por exemplo, "application/xml".

E isso foi gravado corretamente no MinIO.

@@ -136,6 +141,7 @@ def register(self, file_path, prefix="", original_uri=None, preserve_name=False)
self.bucket_name,
object_name=object_name,
file_path=file_path,
content_type=get_mimetype(file_path),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

o nome do parâmetro content_type está correto, porém, o que está sendo entregue por get_mimetype está com problema (ou vem tupla ou vem um dict de mimetypes).

@robertatakenaka robertatakenaka merged commit f8a32e8 into scieloorg:main Oct 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants