Skip to content
This repository has been archived by the owner on May 28, 2023. It is now read-only.

Reformulação do laguinho #66

Merged
merged 68 commits into from
Oct 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
e65520b
Inicia arquivos de restruturação da api
lucasmedeiros Sep 3, 2019
dfed285
Cria estrutura inicial de pastas
lucasmedeiros Sep 3, 2019
8631912
Adiciona novamente o LICENSE
lucasmedeiros Sep 3, 2019
78b8a9a
Readiciona o discord, descriçao e sourcerer
lucasmedeiros Sep 3, 2019
25cfc46
Adiciona pipenv no projeto e scripts de inicializaçaõ
lucasmedeiros Sep 3, 2019
8ae0f27
Remove script desnecessario
lucasmedeiros Sep 3, 2019
ab86ca3
Adiciona python-dotenv e variáveis de ambiente para o flask run
lucasmedeiros Sep 3, 2019
d0f3385
Resolve alguns erros e renomeia script de start para dev
lucasmedeiros Sep 3, 2019
420ba98
Remove requirements.txt
lucasmedeiros Sep 3, 2019
ca56c18
Modifica Pipfile e adiciona FLAS_ENV em .flaskenv
lucasmedeiros Sep 3, 2019
df04498
Update .flaskenv
lucasmedeiros Sep 3, 2019
78dc331
Modifica Pipfile para Python 3
lucasmedeiros Sep 4, 2019
f6b38d9
Atualiza script "dev" pra "start"
JoseRenan Sep 4, 2019
1604977
Merge pull request #35 from OpenDevUFCG/cria-estrutura-inicial
JoseRenan Sep 4, 2019
b1909c7
Adiciona documentação para execução e instalação no README
lucasaarcoverde Sep 6, 2019
cbd2f8c
Merge pull request #44 from lucasaarcoverde/development
JoseRenan Sep 6, 2019
2782c85
Corrige exemplo de mudança de porta no README
JoseRenan Sep 6, 2019
6f4c643
Adiciona modelo do metadata com validação
lucasaarcoverde Sep 6, 2019
cb19fdf
Adiciona dependencias no Pipfile
lucasaarcoverde Sep 6, 2019
5603c53
Adiciona tratamento de erro de validação
lucasaarcoverde Sep 6, 2019
8d4ff10
Adiciona rota de publish
lucasaarcoverde Sep 6, 2019
12b08b1
Adiciona espaços depois de virgulas
JoseRenan Sep 6, 2019
e4d28a8
Adiciona http status 201 no retorno ao criar o DatasetMetadata
lucasaarcoverde Sep 7, 2019
6c2e6a3
Padroniza a rota com o REST
lucasaarcoverde Sep 7, 2019
6cbdc98
Ajusta nome da função para pegar datasets
lucasaarcoverde Sep 7, 2019
cf4e010
Ajusta nome da classe MetadataSchema para DatasetMetadataSchema
lucasaarcoverde Sep 7, 2019
f20fa14
Ajusta identação para padronizar com o PEP8
lucasaarcoverde Sep 7, 2019
f60a82e
Agora DatasetMetadataSchema é um singleton, para não precisar instanc…
lucasaarcoverde Sep 7, 2019
4d61e2b
Move função de retorno de mensagen de erro para outro arquivo, para q…
lucasaarcoverde Sep 7, 2019
e252f11
Remove espaços em branco do metadata.py (pylint)
lucasmedeiros Sep 7, 2019
04998a1
Remove import não utilizado (pprint)
lucasmedeiros Sep 7, 2019
b8f50e4
Padroniza uma forma de parse pra JSON usando schema
lucasaarcoverde Sep 7, 2019
2f6b0a4
Move função de retorno de mensagen de erro para outro arquivo, pa…
lucasaarcoverde Sep 7, 2019
7494dc1
Remove import não utilizado (pprint)
lucasaarcoverde Sep 7, 2019
968a54d
Remove identação extra
JoseRenan Sep 8, 2019
aa2d98d
Adiciona trailing line
JoseRenan Sep 8, 2019
dbf416c
Merge pull request #45 from lucasaarcoverde/development
lucasmedeiros Sep 8, 2019
b06c220
Ignora .vscode e adota jsonify como padrão pra response
JoseRenan Sep 8, 2019
78a780d
Merge pull request #46 from OpenDevUFCG/fix-jsonify
JoseRenan Sep 9, 2019
e338b1d
Adiciona obtenção de dataset por nome
lucasmedeiros Sep 9, 2019
a2f21d4
Adiciona / ao final do endpoint dos nomes
lucasmedeiros Sep 10, 2019
40a23a3
Retorna 404 not found, caso não seja encotrado resultado
lucasmedeiros Sep 10, 2019
901f016
Adiciona versão inicial do CONTRIBUTING.md com informações sobre cont…
lucasmedeiros Sep 10, 2019
d019131
Adiciona quebra de linha no final
lucasmedeiros Sep 10, 2019
06e4fc8
Adiciona changelog ao projeto
lucasmedeiros Sep 10, 2019
5530fff
Update CHANGELOG.md
lucasmedeiros Sep 10, 2019
65d3dbf
Corrige erro de digitação
JoseRenan Sep 10, 2019
37682e9
Merge pull request #51 from OpenDevUFCG/feat/inicia-contributing
JoseRenan Sep 10, 2019
d359f9f
Remove barras finais dos endpoints
lucasmedeiros Sep 10, 2019
7a6d3d3
Resolve problemas com barras das rotas com strict_slashes
lucasmedeiros Sep 11, 2019
588f697
Removido --- do changelog
JoseRenan Sep 11, 2019
47a5a31
Merge pull request #50 from OpenDevUFCG/feat/recupera-dataset-nome
JoseRenan Sep 18, 2019
3b1ae2d
Merge pull request #52 from OpenDevUFCG/feat/cria-changelog
JoseRenan Sep 18, 2019
cb9e3db
Adiciona arquivos guidelines restantes. Fixes #54
lucasmedeiros Oct 1, 2019
cfa1fcb
Modifica descrições dos guidelines para comentários
lucasmedeiros Oct 1, 2019
8d0a050
Update bug_report.md
lucasmedeiros Oct 2, 2019
5d1dfee
Merge pull request #57 from OpenDevUFCG/feat/add-guideline-files
paulojbleitao Oct 2, 2019
edc289b
Adiciona checagem de dataset duplicado
paulojbleitao Oct 9, 2019
598d0c9
Verifica se datasets tem nomes iguais
paulojbleitao Oct 9, 2019
4bd6d39
Merge pull request #60 from OpenDevUFCG/unique-datasets
JoseRenan Oct 10, 2019
610140f
Renomeando arquivo laguinho/routes/__inity__.py
L3onix Oct 12, 2019
0b1b264
Merge pull request #63 from L3onix/rename-file
paulojbleitao Oct 12, 2019
86c2928
add Dockerfile
felipemarinho97 Oct 24, 2019
2404cf5
add HOST configuration and make some image size improvments
felipemarinho97 Oct 24, 2019
7c176ae
update to build a production server
felipemarinho97 Oct 24, 2019
ced24a4
Merge pull request #65 from felipemarinho97/dockerfile
JoseRenan Oct 24, 2019
983716a
Corrige conflitos com master
JoseRenan Oct 24, 2019
50777e6
Atualiza changelog
JoseRenan Oct 24, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .babelrc

This file was deleted.

2 changes: 0 additions & 2 deletions .env.example

This file was deleted.

3 changes: 3 additions & 0 deletions .flaskenv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FLASK_APP=laguinho
FLASK_RUN_PORT=8080
FLASK_ENV=development
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Reportar bug
about: Reporte um bug e ajude-nos a melhorar
labels: 'bug'

---

**Descreva o bug**
<!-- Uma descrição clara e concisa do que consiste o bug. -->

**Reprodução do bug**
<!-- Passos para reproduzir o comportamento indesejado:
1. Vá para '...'
2. Clique em '....'
3. Role até '....'
4. Veja o erro -->

**Comportamento desejado**
<!-- Uma descrição clara sobre como deveria ser o comportamento esperado. -->

**Capturas de tela**
<!-- Se aplicável, adicione capturas de tela para ajudar na descrição do problema. -->

**Configuração do ambiente de desenvolvimento em que foi encontrado o bug:**
<!-- Por exemplo:
- SO: [e.g. Mac OS, Linux Mint, Ubuntu]
- Navegador: [e.g. chrome, safari]
- Software: [e.g. insomnia, postman]
- Versão: [e.g. 22] -->

**Contexto adicional**
<!-- Adicione qualquer outro contexto ao problema reportado aqui. -->
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Requisição de melhoria
about: Peça uma melhoria para esse projeto
labels: 'enhancement'

---

**Descrição da melhoria:**
<!-- Descreva a melhoria e suas características mais importantes. -->

**Necessidade da melhoria:**
<!-- Descreva o porquê da melhoria ser necessária. -->

**Como ela pode ser implementada:**
<!-- Dê ideias de como a melhoria pode ser implementada no projeto. -->

**Imagens:**
<!-- Se aplicável, adicione uma imagem que ajude no entendimento da melhoria. -->

**Contexto adicional:**
<!-- Adicione qualquer informação adicional que achar necessária. -->
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!-- INSTRUÇÕES: -->

<!-- 1. Seja descritivo no nome de sua PR. -->

<!-- 2. Informe o número da issue a que sua PR se refere (usando #NUMERO_DA_ISSUE). -->

<!-- 3. Nos conte mais sobre sua PR e o que você fez! (: -->

<!-- 4. Garanta que sua contribuição esteja de acordo com as regras descritas nos links abaixo. -->

- [X] Minha contribuição respeita o [código de conduta](../CODE_OF_CONDUCT.md) do repositório.
25 changes: 22 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
node_modules/
build/
.DS_Store
.env
yarn-error.log
*.pyc
*.pyo
env/
env*
dist/
build/
*.egg
*.egg-info/
_mailinglist
.tox/
.cache/
.pytest_cache/
.idea/
docs/_build/
.vscode

# Coverage reports
htmlcov/
.coverage
.coverage.*
*,cover
6 changes: 0 additions & 6 deletions .nowignore

This file was deleted.

25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Changelog
Todas as mudanças desse projeto serão documentadas nesse arquivo.

O formato foi baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
e esse projeto adere a [Semantic Versioning](https://semver.org/lang/pt-BR/spec/v2.0.0.html).

## [Não publicado]

## [2.0.0] - 24/10/2019

### Adicionado

- API agora feita com `Python3`, utilizando `flask` e `pipenv`.
- Endpoint `/datasets` para requisições GET, que vai retornar os datasets cadastrados.
- Endpoint `/datasets` para requisições POST, para publicar um novo dataset.
- Endpoint `/datasets/<nome>` para requisições GET, que vai retornar metadados a respeito de um dataset a partir do seu nome.
- Esse arquivo de changelog para servir de exemplo para lançamentos futuros.

### Modificado

- Foi dado início à [reformulação do laguinho](https://github.com/OpenDevUFCG/laguinho-api/issues/31).

### Removido

- API feita em `node` (versão 1.0.0-legacy).
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,4 @@ determinadas por outros membros da liderança do projeto.
## Atribuição

Este Código de Conduta é adaptado do [Contributor Covenant](https://www.contributor-covenant.org),
versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct.html
versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct.html
61 changes: 32 additions & 29 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,51 @@
# Como contribuir?
# Contribuindo para o Laguinho

Aqui vai um tutorialzinho sobre como contribuir com o Laguinho API, qualquer dúvida que tiver pode criar issue ou chamar no [gitter](https://gitter.im/OpenDevUFCG/laguinho-api) ;)
Contribuições sempre serão bem vindas, sejam pequenas ou grandes!

## Código de Conduta

Adotamos um [código de conduta](./CODE_OF_CONDUCT.md) que esperamos que todos sigam a participar do projeto. Leia para entender que ações toleramos e quais não antes de abrir qualquer issue ou pull request.

## Estrutura do projeto

A estrutura de arquivos do projeto se assemelha ao exemplo abaixo:

```
/src
/v1
/endpoint1
endpoint1-controller.js
endpoint1-data.js
[ talvez mais alguns arquivos ]
/endpoint2
endpoint2-controller.js
endpoint2-data.js
[ talvez mais alguns arquivos ]
/laguinho
/models
__init__.py
metadata.py
error_messages.py
[ futuros outros arquivos de modelagem ]
/routes
__init__.py
datasets.py
[ futuros outros arquivos para rotas ]
/errors
__init__.py
handlers.py
[ futuros outros arquivos para gerenciamento de erros ]
__init__.py
```

Na pasta `/src` temos todo o código do projeto, dentro dele encontraremos subpastas que seguem a estrutura da URI, por exemplo, o endpoint `GET /v1/repositories` está definido na pasta `/src/v1/repositories`

## Contribuindo com novos endpoints
## Organização de Issues

Para criar um novo endpoint, seguimos a receitinha abaixo:
As issues são um espaço aberto para requisitar criação ou correção de funcionalidades da API. Também pode ser usada como um espaço de discussão sobre assuntos gerais do projeto.

1. Procuramos a pasta da última versão da API, (Ex: se existir dentro do `/src` as pastas `/v1` e `/v2` escolhemos a `/v2`)
1. Criamos nela uma nova pasta com o nome do endpoint a ser criado, por exemplo `/xerox-geolocalization` e dentro dela um controller com o padrão `[nome-endpoint]-controller.js` que vai ser o módulo que implementa e exporta a(s) nova(s) rota(s)
1. Caso seja necessário um dataset para popular nosso(s) endpoint(s), criamos um `[nome-endpoint]-data.js` que vai ser responsável por conter os dados ou dados necessários para popular o(s) novo(s) endpoint(s)
1. Importamos o router no módulo da versão da API (`/src/vX/index.js`, sendo X o número da versão)
1. Adicionamos a documentação do(s) endpoint(s) no [docs](https://github.com/OpenDevUFCG/laguinho-api/blob/master/docs/README.md) baseados nos já existentes
Veja sobre nossa [organização de Issues](https://github.com/OpenDevUFCG/laguinho-api/wiki/Organiza%C3%A7%C3%A3o-de-Issues)!

Dica 1: Olhe a implementação e organização de endpoints existentes para entender melhor os padrões usados.
## Propondo uma mudança

Dica 2: Sinta-se livre para criar outros arquivos ou sub-diretórios caso julgue necessário (Seja pra modularizar melhor ou o que for).
Caso deseje propor uma mudança, primeiro verifique se já não existe uma Issue sobre o que você deseja. Se não, [abra uma Issue](https://github.com/OpenDevUFCG/laguinho-api/issues/new) relacionada ao seu problema e espere a comunidade te responder.

Dica 3: O endpoint pode ter sub-rotas (Ex: `/v1/repositories/contributors`) definidas no mesmo controller caso julgue desnecessário criar uma sub-pasta para isso.
## Primeira contribuição

## Contribuindo com endpoints existentes
Caso tenha se interessado pela nossa comunidade, deseja contribuir para o nosso projeto, mas não sabe por onde começar, dê uma olhada em issues com a tag [`good first issue`](https://github.com/OpenDevUFCG/laguinho-api/labels/good%20first%20issue) que serão um bom ponto de partida. Também vale a pena olhar sobre Issues relacionadas a tecnologias que você já tem uma certa familiaridade.

Como já foi dito anteriormente, a estrutura de arquivos do projeto é baseada na URI esperada do endpoint, nesse caso, se desejar contribuir para o endpoint `GET /v1/repositories` poderá facilmente encontrar o código do endpoint na pasta `/src/v1/repositories`, o endpoint estará definido num arquivo que segue o padrão `[nome-endpoint]-controller.js`.
Se você decide fazer alguma mudança, e não existe uma Issue sobre, crie uma nova informando o que será feito e manifeste que você irá querer fazer. Caso exista a Issue, verifique nos comentários se já não existe alguém trabalhando nisso, e comente que você deseja fazer.

## Sugerindo e/ou adicionando dados
Não tenha medo de pedir por orientação ou ajuda, mas, acima de tudo, seja destemido e respeitoso. Você também pode participar de discussões para ajudar a comunidade a realizar boas escolhas!

Caso você tenha um dataset interessante sobre a UFCG e queira compartilhar com a gente, sinta-se livre para criar uma issue falando sobre isso e até (caso desejar) fazer um PR [implementando um novo endpoint](#contribuindo-com-novos-endpoints) que sirva esses dados!!!
## Enviando uma Pull Request

Caso queira adicionar mais dados aos datasets existentes de algum endpoint, você poderá verificar na [documentação do endpoint](https://github.com/OpenDevUFCG/laguinho-api/blob/master/docs/README.md) se existe informação de como contribuir para esses dados, e caso não exista... cria uma issue, pfvr <3
Está pronto para submeter uma Pull Request? Primeiro dê uma olhada nesse [guia](https://github.com/OpenDevUFCG/laguinho-api/wiki/Submetendo-uma-Pull-Request)!
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM python:alpine

EXPOSE 80
# set proper ENV to run app on docker
ENV FLASK_RUN_HOST="0.0.0.0"
ENV PIP_NO_CACHE_DIR="true"

WORKDIR /opt

# copy project files to /opt
COPY . /opt/

# installs pipenv, and gcc to compile required cython and then purge it to save space.
# this is needed to run on a single RUN to create only one container layer.
RUN apk add --no-cache --virtual .build-deps gcc musl-dev \
&& pip install pipenv \
&& pipenv install waitress \
&& pipenv install --deploy --system \
&& apk del .build-deps

ENTRYPOINT ["pipenv", "run", "waitress-serve", "--port=80", "--call", "laguinho:create_app"]
19 changes: 19 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
python-dotenv = "*"
pylint = "*"

[packages]
flask = "*"
marshmallow = "*"

[requires]
python_version = "3"

[scripts]
lint = "pylint laguinho/"
start = "flask run"
Loading