Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Parser API - Christian Mendes

Este projeto consiste em um parser de logs do jogo Quake 3 Arena, capaz de processar eventos de partidas e expor os dados via uma API RESTful com persistência em MongoDB (Atlas), serão exibidos através de um FrontEnd.


Sumário


Descrição do Projeto

O parser lê o arquivo games.log, identifica todas as partidas iniciadas (InitGame:) e encerradas, agrupando as estatísticas por jogo. Cada estatística é convertida para um modelo JSON contendo:

"game_1": {
  "total_kills": 45,
  "players": ["Isgalamido", "Zeh", "Dono da Bola"],
  "kills": {
    "Isgalamido": 18,
    "Zeh": 20,
    "Dono da Bola": 5
  }
}

Funcionalidades

  • Parser robusto de logs de jogo
  • Identificação de jogadores e contagem de kills
  • Tratamento de mortes causadas por <world> com penalidade de -1
  • API RESTful com endpoints para consulta, detalhamento e persistência
  • Persistência dos dados em banco MongoDB
  • Testes automatizados com cobertura dos principais cenários

Tecnologias Utilizadas

Tecnologia Função
Python 3.11+ Linguagem principal
Flask Framework web leve para API
PyMongo Conexão com MongoDB
pytest Framework de testes
MongoDB Atlas Banco de dados em nuvem
CORS Permite requisições de outros domínios
React + Vite Estrutura leve para FrontEnd
React R. DOM Navegação entre páginas
AXIOS Consumo de API REST
Bootstrap 5 Componentes Visuais

Como Executar o Projeto (Backend e Frontend)

Pré-requisitos:

  • Python 3.11+
  • Pip
  • Ambiente virtual: python -m venv venv
  • Dependências: npm run dev

Passos:

  1. Clone o repositório e acesse a pasta:

    git clone <https://github.com/azrael-developer/gamesLog_API.git>
    cd <Raiz do Projeto>
  2. Instale as dependências:

    pip install flask flask-cors ()
    pip install -r requirements.txt
    npm install
    
  3. Execute a API:

    python -m venv venv (Crie o ambiente)
    .\venv\Scripts\Activate.ps1 (Ativar ambiente)
    cd .. (Caso não estiver na RAIZ do projeto)
    $env:FLASK_APP="backend.app"
    flask run
    
  4. Execute o FrontEnd:

    cd frontend
    npm run dev

A API estará acessível em: http://localhost:5000

O FrontEnd que consome os dados da API estará acessível em: http://localhost:5173/


Estrutura do Projeto

Teste-Backend-Christian-Mendes/
├── backend/
│   ├── app.py
│   ├── parser.py
│   ├── games.log
│   ├── models.py
│   ├── requirements.txt
│   └── tests/
│       ├── __init__.py
│       ├── test_api.py
│       └── test_parser.py
├── frontend/
│   ├── index.html
│   ├── package.json
│   ├── package-lock.json
│   ├── vite.config.ts
│   ├── tsconfig.json
│   ├── tsconfig.app.json
│   ├── tsconfig.node.json
│   ├── vite-env.d.ts
│   ├── public/
│   │   └── vite.svg
│   └── src/
│       ├── App.tsx
│       ├── App.css
│       ├── index.css
│       ├── main.tsx
│       ├── assets/
│       │   └── react.svg
│       └── pages/
│           ├── GameDetails.tsx
│           ├── Games.tsx
│           ├── GamesDB.tsx
│           ├── Home.tsx
│           └── SaveGames.tsx
├── .gitignore
└── README.md


Testes Automatizados

Rodar todos os testes:

.\venv\Scripts\Activate.ps1 (Ativar ambiente caso não tenha ativado)
cd .. (Raiz do Projeto)
$env:PYTHONPATH="."
pytest backend/tests

Arquivos de teste:

  • test_parser.py: cobre lógica de parsing, contagem de kills, jogadores e regras do <world>
  • test_api.py: cobre todos os endpoints (/games, /games/<id>, /games/save, /games/db)

Exemplos de Uso da API

  • Listar todas as partidas

    GET /games
    
  • Buscar jogo específico

    GET /games/1
    
  • Salvar estatísticas no MongoDB

    POST /games/save
    
  • Consultar dados do banco

    GET /games/db
    

De acordo com a Tarefa:

Requisito Status
Parser com contagem correta de kills e jogadores OK
Ignora <world> na contagem de jogadores OK
Penaliza kill por <world> (-1) OK
API RESTful em JSON OK
Testes bem estruturados com pytest OK
Git estruturado e modularização OK
Documentação clara e completa OK
Persistência no banco MongoDB (extra) OK
Rota separada para o banco (/games/db) OK

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages