{"id":20622144,"url":"https://github.com/andersonhsporto/c-avengers-api","last_synced_at":"2026-05-01T20:31:48.111Z","repository":{"id":43181278,"uuid":"463986954","full_name":"andersonhsporto/C-avengers-api","owner":"andersonhsporto","description":"API Rest Using Data From Marvel Avengers Comic Book","archived":false,"fork":false,"pushed_at":"2023-03-19T22:25:58.000Z","size":257,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T23:51:59.412Z","etag":null,"topics":["42","42sp","ansi-c","c","libft","mariadb","mongoose","rest","rest-api"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andersonhsporto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-26T22:59:08.000Z","updated_at":"2023-05-18T00:41:28.000Z","dependencies_parsed_at":"2025-01-17T05:36:32.702Z","dependency_job_id":null,"html_url":"https://github.com/andersonhsporto/C-avengers-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andersonhsporto/C-avengers-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonhsporto%2FC-avengers-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonhsporto%2FC-avengers-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonhsporto%2FC-avengers-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonhsporto%2FC-avengers-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andersonhsporto","download_url":"https://codeload.github.com/andersonhsporto/C-avengers-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonhsporto%2FC-avengers-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42","42sp","ansi-c","c","libft","mariadb","mongoose","rest","rest-api"],"created_at":"2024-11-16T12:21:04.134Z","updated_at":"2026-05-01T20:31:48.091Z","avatar_url":"https://github.com/andersonhsporto.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Avengers API\n\n\u0026emsp; Avengers API é uma API REST criada para própositos de estudo,\nutilizando a linguagem C e o framework Mongoose.\nEsta permite a consulta de dados sobre os personagens da Marvel Comics.\n\n\u0026emsp; Além da API, este projeto também possui um cliente em C denominado `Logviewer`, este cliente permite a consulta dos dados de log da api.\n\n# Documentação\n\nAvengers Api utiliza uma [versão simplificada](https://github.com/42sp/42labs-selection-process-v2-andersonhsporto/blob/main/utils/vingadores.csv) de alguns dados sobre os personagens da Marvel Comics compilado por [Walt Hickey](https://fivethirtyeight.com/contributors/walt-hickey/).\n\n### Tecnologias\n\n- [ANSI C ](https://www.ansi.org/) - Linguagem de programação\n- [Mongoose](https://mongoose.ws/) - Framework para desenvolvimento de aplicações web\n- [mJson](https://github.com/cesanta/mjson) - Biblioteca para manipulação de arquivos JSON\n- [Mariadb](https://mariadb.org/) - Banco de dados relacional\n- [Postman](https://www.postman.com/) - Ferramenta para testar e documentar APIs\n- [Libft](https://github.com/andersonhsporto/ft-libft) - Biblioteca de funções em C\n\n### Instalação\n\nPara este projeto é necessario ter instalado o [mariadb](https://mariadb.org/), o [gcc](https://gcc.gnu.org/) e o [make](https://www.gnu.org/software/make/).\n\n\nO usuário padrão está definido como `userStark` e a senha padrão como `strongpassword`,\nestes estão predefinidos nas macros `USER` e `PASS` dentro do header `env.h`.\nalém destes a api utiliza um banco de dados denominado `api_vingadores` definido na macro `DB` no mesmo header.\n\n\nEste projeto utiliza algumas bibliotecas externas, é recomendado que utilize\no pacote base-devel em sistemas Arch ou o equivalente para a sua distribuição linux.\n\n\nUtilize o seguinte comando para instalar o pacote base-devel:\n```\n    $ sudo pacman -S base-devel\n```\n\nPara compilar o projeto utilize o `make` este irá gerar o arquivo denominado\n`avengers_api`.\n\n### Docker Compose\n\nO docker compose automatiza a criação de containers, para utiliza-lo basta executar o comando:\n\n```\n\t$ docker-compose up -d\n```\n\n### Dockerhub\n\nUma imagem docker da api está disponível no dockerhub no link [andersonhsporto/avengers_api](https://hub.docker.com/r/andersonhsporto/avengers_api)\n\nPara executar a imagem utilize o comando:\n\n```\n    $ docker run -p 4242:4242 -d --name avengers_api andersonhsporto/avengers_api\n```\n\nUtilize o endereço `http://localhost:4242` para acessar a api.\n\n\n### Criar imagem Docker\n\nPara criar uma imagem local utilize o comando:\n\n```\n    $ docker build -t \u003cNOME_DA_IMAGEM\u003e .\n```\n\ne para executar a imagem utilize o comando:\n\n```\n\t$ docker run -p 4242:4242 -d --name avengers_api \u003cNOME_DA_IMAGEM\u003e\n```\n\n### URI\n\nA uri está prefixada em `http://localhost:4242`, este é definido pela macro `ADDRESS` no header `env.h`\n\n### Dados\n\nA versão completa dos dados utilizados pela api está disponível em: [avengers.csv](https://github.com/fivethirtyeight/data/tree/master/avengers)\n\nHeader | Definição\n---|---------\n`id`| ID exclusivo do personagem\n`URL`| URL do personagem de quadrinhos na Marvel Wikia\n`Name` | Nome completo do personagem\n`Alias` | Apelido em inglês do personagem\n`Alias-br` | Apelido em português do personagem\n`Appearances` | Número de histórias em quadrinhos em que o personagem apareceu até 30 de abril \n`Current?` | Membro está atualmente ativo em uma equipe afiliada aos vingadores?\n`Gender` | Gênero registrado do personagem\n`Probationary` | Às vezes, o personagem recebeu status probatório como um Vingador, esta é a data em que aconteceu\n`Full/Reserve` | Mês e ano em que o personagem foi apresentado como membro pleno ou reserva dos Vingadores\n`Year` | Mês e ano em que o personagem foi apresentado como membro pleno ou reserva dos Vingadores\n`Years since joining` | 2015 menos o ano\n`Honorary` | Status do vingador, se eles receberam o status de \"Vingador Honorário\", se eles estão simplesmente na \"Academia\" ou \"Full\" caso contrário\n`Death1` | Sim se o Vingador morreu, Não se não\n`Return1` | Sim se o Vingador retornou de sua primeira morte, Não se não retornou, em branco se não aplicável\n`Death2` | Sim se o Vingador morreu uma segunda vez após seu renascimento, Não se não morreu, em branco se não for aplicável\n`Return2` | Sim se o Vingador retornou de sua segunda morte, Não se não retornou, em branco se não aplicável\n`Notes` | Descrições de mortes e ressurreições\n\n### Utilização\n\nÉ atribuído um *id* (numero inteiro positivo) para cada personagem ao iniciar a api.\n\nEste id pode ser utilizado no método `GET` para consultar as informações sobre o personagem.\nUtilizando este id com `DELETE` é possível deletar o personagem do banco de dados.\n\nPor exemplo: http://localhost:4242/id/7\n\n```javascript\n{\n    \"id\": 7,\n    \"URL\": www.marvel.wikia.com/Steven_Rogers_(Earth-616),\n    \"Name\": Steven Rogers,\n    \"Alias\": Captain America,\n    \"Alias-br\": Capitao America,\n    \"Appearances\": 3458,\n    \"Current\": YES,\n    \"Gender\": MALE,\n    \"Probationary\": nul,\n    \"Full/Reserve Avengers Intro\": Mar-64,\n    \"Year\": 1964,\n    \"Year since joining\": 51,\n    \"Honorary\": Full,\n    \"Death 1\": YES,\n    \"Return 1\": YES,\n    \"Death 2\": nul,\n    \"Return 2\": nul,\n    \"Notes\": Dies at the end of Civil War. Later comes back.\n}\n```\nTambém é possivel utilizar o *alias* com o método `GET` e com o método `DELETE`,\nno caso de nomes compostos é necessário usar o sinal de `+` no lugar do espaço.\nPor exemplo: http://localhost:4242/alias/Iron+Man\n\n```javascript\n{\n    \"id\": 3,\n    \"URL\": www.marvel.wikia.com/Anthony_Stark_(Earth-616),\n    \"Name\": Anthony Edward Tony Stark,\n    \"Alias\": Iron Man,\n    \"Alias-br\": Homem de Ferro,\n    \"Appearances\": 3068,\n    \"Current\": YES,\n    \"Gender\": MALE,\n    \"Probationary\": nul,\n    \"Full/Reserve Avengers Intro\": Sep-63,\n    \"Year\": 1963,\n    \"Year since joining\": 52,\n    \"Honorary\": Full,\n    \"Death 1\": YES,\n    \"Return 1\": YES,\n    \"Death 2\": nul,\n    \"Return 2\": nul,\n    \"Notes\": Death\u003e Later while under the influence of Immortus Stark committed a number of horrible acts and was killed.  This set up young Tony. Franklin Richards later brought him back\n}\n```\nAo utilizar a api no `path /` com o método `GET` a api retorna as informações sobre algum personagem de forma aleátoria.\nPor exemplo: http://localhost:4242/\n\n```javascript\n{\n    \"id\": 16,\n    \"URL\": www.marvel.wikia.com/Natalia_Romanova_(Earth-616)#,\n    \"Name\": Natalia Alianovna Romanova,\n    \"Alias\": Black Widow,\n    \"Alias-br\": Viúva Negra,\n    \"Appearances\": 1112,\n    \"Current\": YES,\n    \"Gender\": FEMALE,\n    \"Probationary\": nul,\n    \"Full/Reserve Avengers Intro\": May-73,\n    \"Year\": 1973,\n    \"Year since joining\": 42,\n    \"Honorary\": Full,\n    \"Death 1\": YES,\n    \"Return 1\": YES,\n    \"Death 2\": nul,\n    \"Return 2\": nul,\n    \"Notes\": Killed by The Hand. Later revived with The Stone of the Chaste\n}\n```\nEstá api retorna os seguintes \"HTML status code\"\n\nSTATUS CODE | Definição\n---|---------\n`200 - OK`| Tudo funcionou como esperado\n`400 - Bad Request`| Falha na requisição\n\n\n## CLI Logviewer (Visualizador de logs)\n\nLogviewer é uma interface de linha de comando\nque mostra um resumo das informações contidas no log da\navengers api.\n\nlogviwer utiliza a biblioteca [readline](https://wiki.archlinux.org/title/readline),\npara realizar a instalação desta em sistemas Arch utilize o seguinte comando: \n```\n    $ pamac install readline\n```\n\nPara compilar o projeto utilize o `make` este irá gerar o arquivo denominado\n`logviewer`.\n\nPara obter ajuda no terminal da logviewer utilize o comando `help`.\n\n### Lista de Comandos\nComando | Definição\n---|---------\n`help`| Exibe a lista de comandos\n`GET`| Mostra informações sobre o método GET\n`DELETE`| Mostra informações sobre o método DELETE\n`root`| Mostra informações sobre todos os métodos\n`clear`|  Limpa a tela do terminal\n`exit`|  Encerra o terminal\n\n#### Exemplos:\nUtilizando [Logviwer] \u003e\u003e  get\n```bash\n[Logviwer] \u003e\u003e  get\n\n\tMethod:\tGET\n\t*****************************\n\t*  PATH    * Total Requests *\n\t*****************************\n\t*    /     *       4       *\n\t*****************************\n\t*  /id/    *       8        *\n\t*****************************\n\t* /alias/  *       6        *\n\t*****************************\n```\nUtilizando [Logviwer] \u003e\u003e  delete\n```bash\n[Logviwer] \u003e\u003e  delete\n\n\tMethod:\tDELETE\n\t*****************************\n\t*  PATH    * Total Requests *\n\t*****************************\n\t*  /id/    *       1        *\n\t*****************************\n\t* /alias/  *       3        *\n\t*****************************\n```\nUtilizando [Logviwer] \u003e\u003e  root\n```bash\n[Logviwer] \u003e\u003e  root\n\n\tMethod:\troot\n\t******************************************\n\t*  METHOD    *  PATH    * Total Requests *\n\t******************************************\n\t*    GET     *    /     *       4       *\n\t******************************************\n\t*    GET     *  /id/    *       8        *\n\t******************************************\n\t*    GET     * /alias/  *       6        *\n\t******************************************\n\t*  DELETE    *  /id/    *       1        *\n\t******************************************\n\t*  DELETE    * /alias/  *       3        *\n\t******************************************\n```\n\n## Referências\n* Informações adicionais - [C API mariadb](https://zetcode.com/db/mysqlc/)\n* Informações adicionais - [mariadb](https://mariadb.org/)\n* Informações adicionais - [C API readline](https://www.gnu.org/software/readline/)\n* Informações adicionais - [readline](https://wiki.archlinux.org/title/readline)\n* Informações adicionais - [C API curl](https://curl.se/libcurl/c/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonhsporto%2Fc-avengers-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandersonhsporto%2Fc-avengers-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonhsporto%2Fc-avengers-api/lists"}