Nesse desafio temos que construir duas aplicações utilizando C, uma API e uma CLI.
API
- arquivos fonte para gerar a API
CLI
- arquivos fonte para gerar o CLI
info
- informações extras sobre o desáfio e minha aprendizagem
- C: o projeto foi feito usando a linguagem C;
- MySQL: como sistema gerenciador de banco de dados;
- Makefile: para altomatizar a compilação dos programas;
- vscode e Vim: editores de texto para o desenvolvimento do projeto;
- git: para o versionamento dos arquivos do projeto;
- github: para hospedagem dos arquivos;
- Docker: para subir a api e almentar a portabilidade do app;
- insomnia: organizador de requests para simular um client
- Trello: para planejamento do projeto;
- Notion: para manter links e aprendizagens importantes para o desenvolvimento do projeto.
- Servidor dedicado para hospedagem do banco de dados:
Fornecido por turbomanifesto.org
CentOS v7.9.2009
Versão do MySQL 5.7.37
Intel(R) Xeon(R) D-2141I CPU @ 2.20GHz
16 VCPU
30 GB de memória RAM DDR4
- mongoose: biblioteca utilizada na criação do código da API;
- libmysql: biblioteca utilizada para acessar o banco de dados;
- Markdown: framework utilizado para escrever a documentação.
- Clone o repositório
git clone https://github.com/42sp/42labs-selection-process-v2-lamorim42.git
- Basta dar
make
no diretório que acabara de clonar. Um container com a aplicação da API será levantado e a API já estará disponivel para requisições emlocalhost:8000/
. A CLI também será compilada ao dar omake
make
- Para compilar apenas a CLI
make CLI
Depois de compilado o binário estará na pasta raiz ./my_cli
A API irá responder as requests de um cliente e salvar o log do request no arquivo server.log
, localmente. Além disso a requisição GET
no endpoit /secret
retorna uma informção secreta do banco de dados que está hospedado em um servidor turbo.
O cliente pode fazer request do tipo GET
em dois endpoints na API. No /
e no /secret
. Será retornado um body no formato JSON
.
A CLI irá usar os dados de log gerados pela API, salvos no arquivo server.log
, e os printa no terminal.
./my_cli all log
- Para ver as requisições válidas
./my_cli all
./my_cli GET
- Para ver as requisições do método GET em um endpoint válido
./my_cli GET /
./my_cli GET /secret