Skip to content

rodrigocordulab/fiap-8soat-g56-hackaton-download

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FIAP X - Download Service

📌 Introdução

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.

🚀 Tecnologias Utilizadas

  • 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)

📺 Arquitetura do Sistema

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.

Arquitetura do Sistema

📂 Estrutura do Projeto

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)

🔐 Autenticação

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).

📦 Exemplo de Requisição

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

🛠️ Como Executar

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published