hackathon-gama/real-time-score

Criar endpoint para upload de arquivos para o S3, aqui nós devemos usar o Direct Upload do ActiveStorage

wedercm opened this issue · 1 comments

Criar endpoint para upload de arquivos para o S3, aqui nós devemos usar o Direct Upload do ActiveStorage

Aqui será criar um upload que retornará uma url assinada para que o client da API possa fazer uploads de arquivos diretamente para o serviço de storage, segue o um diagrama de exemplo:

Image

  1. Faz a requisição para endpoint (POST /direct_uploads) na API que criará um ActiveStorage::Blob e retornará informações relacionados ao ActiveStorage::Blob, como key, filename, signed_id, url (url assinada para upload) e outros para que o cliente faça upload do arquivo.
  2. Com a url do serviço de storage, o cliente pode fazer upload do arquivo.
  3. Client manda requisição para criar ou atualizar recurso (ex: User) passando o signed_id no campo que é "attached". Por exemplo, criar um usuário com foto, deve enviar uma requisição para o endpoint de criação do usuário com o seguinte body:
{
  name: 'Nome do usuário',
  email: 'mail@example.com',
  photo: ${signed_id} // valor recebido no response body do POST /direct_uploads
}
  1. Api só criará o relacionamento do recurso (User) com o attached (photo) se o arquivo existir no serviço de storage.