Este repositório contém o microserviço de download do projeto FIAP X, responsável por permitir que usuários autenticados façam o download do arquivo ZIP gerado com os frames extraídos do vídeo enviado anteriormente. O serviço valida a autenticação via JWT e busca os dados no banco de dados PostgreSQL para verificar a existência e o status do vídeo.
O download do ZIP só é liberado se o status do vídeo for done
.
- FastAPI (Framework web assíncrono)
- SQLAlchemy (ORM para persistência em banco relacional)
- PostgreSQL (Banco de dados relacional)
- JWT (python-jose) (Autenticação e verificação de identidade)
- Docker e Docker Compose (Ambiente containerizado)
O Download Service é acionado via API Gateway em chamadas do tipo GET /download/{video_id}
e retorna o arquivo .zip
contendo os frames extraídos do vídeo.
download-service/
├── app/
│ ├── main.py # Inicializa a aplicação FastAPI
│ ├── controllers/
│ │ └── download_controller.py # Rota de download protegida com JWT
│ ├── services/
│ │ └── auth_service.py # Validação do token JWT
│ ├── models/
│ │ ├── video.py # Modelagem do vídeo
│ │ └── user.py # Modelagem do usuário
│ └── db.py # Conexão e criação das tabelas no banco
├── requirements.txt # Dependências Python
├── Dockerfile # Container do serviço
└── docker-compose.yml # Orquestração local (opcional)
O serviço exige token JWT válido no header:
Authorization: Bearer <seu_token>
Esse token é decodificado para garantir que o vídeo pertence a um usuário autorizado (via user_email
se necessário).
GET /download/4
Authorization: Bearer <token>
Caso o vídeo esteja processado corretamente, o ZIP será baixado com:
- Content-Type:
application/zip
- Content-Disposition:
attachment; filename=frames.zip
docker compose up download
Certifique-se de que o serviço tem acesso ao volume /frames
e que o arquivo .zip
existe no caminho especificado no banco.