SALIC API

Build status Code coverage Documentation Maintainability

API aberta para o sistema SALIC. Tem por objetivo expor os dados de projetos da lei Rouanet. A API está implantada em http://api.salic.cultura.gov.br/doc/ e possui uma documentação para o usuário no formato OpenAPI/Swagger.

O projeto ainda se encontra em fase de homologação, sujeito ainda a muitas alterações, reformulações e atualizacões.

Requisitos

A aplicação foi testada em ambientes LINUX com distribuições Debian, Archlinux e Ubuntu. A implantação é feita utilizando Docker/Docker Compose ou Docker/Rancher. O ambiente de desenvolvimento utiliza uma conexão com um banco de dados local em Sqlite, onde podemos testar a aplicação com dados sintéticos.

A instância principal do Salic-API se conecta no banco de dados MS SQL Server no Ministério da Cultura.

Instalação

Recomendamos que o desenvolvimento seja feito no virtualenv.

Virtualenv

Git clone + virtualenv + pip:

Instale o virtualenvwrapper:

$ sudo apt-get install virtualenvwrapper
$ virtualenvwrapper.sh
$ source `which virtualenvwrapper.sh`
$ mkvirtualenv -p /usr/bin/python3 salic-api
$ workon salic-api

Clone o repositorio:

$ git clone https://github.com/lappis-unb/salic-api

Instale as dependencias:

$ python setup.py develop
$ pip install -e ".[dev]"

Inicialize o banco de desenvolvimento antes de rodar a aplicação:

$ inv db -f
$ inv run

Não esqueça de rodar os testes com frequência:

$ inv test

Docker

Para gerar a build do sistema execute o seguinte comando:

$ docker build -t salic-api .

Para executar o ambiente execute os seguintes comandos:

$ docker run -it --name salic-api -p 5000:5000 -v $PWD:/app salic-api

Para executar os testes com o docker execute o seguinte comando:

$ docker run -it --name salic-api -p 5000:5000 -v $PWD:/app salic-api inv test

Docker Compose

O sistema possui dois docker-compose, um para o ambiente de desenvolvimento e outro para o ambiente de produção, para escolher qual docker compose usar passe o arquivo docker-compose.dev.yml ou docker-compose.prod.yml na flag “-f” no comando docker-compose, como no exemplo a seguir:

$ docker-compose -f docker-compose.dev.yml
ou
$ docker-compose -f docker-compose.prod.yml

Para gerar a build do sistema execute o seguinte comando:

$ docker-compose -f [docker-compose file] build

Para executar o ambiente execute os seguintes comandos:

$ docker-compose -f [docker-compose file] up

Para executar os testes com o docker execute o comando abaixo, esse comando funciona apenas com o docker-compose do ambiente de desenvolvimento, ou seja antes de rodar esse comando certifique-se de ter gerado a build do ambiente de desenvolvimento:

$ docker-compose -f docker-compose.dev.yml run --rm gunicorn inv test

Dependências básicas

  • python-dev
  • python-pip
  • freetds-bin
  • freetds-dev
  • libxml2-dev
  • libxslt1-dev
  • libz-dev
  • unixodbc-dev

Configuração

Edite o arquivo salic-api/app/example_config.py de acordo com seu ambiente. Edite o arquivo salic-api/app/general_config.py apontando o arquivo de configuração a ser usado.

Documentação

A documentação da API é feita de 2 formas:

  • SWAGGER

    • SWAGGER está sendo usado para documentar os endpoints do projeto. Seus arquivos estáticos estão na pasta:

      salic-api/salic_api/static

    • A documentação em produção pode ser acessada através desse link:

      Documentação ENDPOINTS.

  • SPHINX

    • Sphinx está sendo usado para a documentação do projeto como um todo, aproveitando as docstrings no código e também acrescentando informações nos arquivos de documentação que estão na pasta docs/ no formato rst.

    • A documentação em produção pode ser acessada através desse link:

      Documentação API.

    • Para construir a documentação do SPHINX é necessário criar uma pasta que irá conter os arquivos de documentação.

      Crie a pasta build na raiz do projeto.

      mkdir build
      

      Construa a documentação na pasta criada:

      sphinx-autobuild docs build/docs
      

      Para acessar a documentação acesse:

      localhost:8000

Licença

Licensed under the GPL License.