-
Notifications
You must be signed in to change notification settings - Fork 1
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
Conversation
There was a problem hiding this 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:
- inserir python-magic em requirements.txt e em setup.py
- import magic em minio.py
- em minio.py substituir
return guess_type(file_path) or read_mime_types(file_path)
porreturn 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...
dsm/extdeps/minio.py
Outdated
@@ -12,6 +13,10 @@ | |||
logger = logging.getLogger(__name__) | |||
|
|||
|
|||
def get_mimetype(file_path): | |||
return read_mime_types(file_path) or guess_type(file_path) |
There was a problem hiding this comment.
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:
- Ao chamar
get_mimetypes(file_path)
, em quefile_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), |
There was a problem hiding this comment.
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).
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.