Development - Taller-2/app-server GitHub Wiki

Guía de desarrollo

pyenv

Ver pyenv.

Mac: Usar Homebrew

Linux:

Instalar dependencias (Debian, Ubuntu):

apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev

Instalar pyenv:

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

Entorno virtual

Instalar Python 3.6.6 pyenv install 3.6.6

Configurar un entorno virtual para el proyecto: pyenv virtualenv 3.6.6 taller2

Crear un archivo .python-version en el root del directorio del proyecto con contenidos "taller2" para que el entorno se active automáticamente.

Levantar la aplicación

Instalar dependencias: pip install -r requirements.txt

Levantar la aplicación: sh scripts/run.sh

Con gunicorn: export DB=mongodb://localhost:27017/myDatabase && gunicorn -w 4 index:app

Testing

Flake8 (validador de PEP8 + extras): sh scripts/flake8.sh

Pylint: sh scripts/pylint.sh

Tests: sh scripts/tests.sh

Levantar mongoDB

Instalarlo en la máquina, levantarlo ejecutando mongod en una terminal. Luego levantar el server, y probar. Por ejemplo, en este caso se creó un record (POST) para luego buscarlo (GET). Endpoint /user de prueba basado en este tutorial.

dylan@macOS: ~ $ curl --header "Content-Type: application/json" --request POST --data '{"name":"xyz","email":"xyz"}' http://localhost:5000/user
{
  "message": "User created successfully!", 
  "ok": true
}
dylan@macOS: ~ $ curl --request GET http://localhost:5000/user?name=xyz
{
  "_id": "5b860a05a063c41231e517b2", 
  "email": "xyz", 
  "name": "xyz"
}

Levantar docker con mongoDB

Primero escribimos en una terminal situada en la raiz del repositorio lo siguiente:

$ sudo docker-compose up --build

y en otra terminal situada en la raiz del repositorio escribimos lo siguiente:

 $ curl --header "Content-Type: application/json" --request POST --data '{"name":"xyz","email":"xyz"}' http://localhost:4000/user
Salida:
{
  "message": "User created successfully!", 
  "ok": true
}
 $ curl --request GET http://localhost:4000/user?name=xyz
Salida:
{
  "_id": "5b860a05a063c41231e517b2", 
  "email": "xyz", 
  "name": "xyz"
}

Criterio de cálculo de user score

Publicar incrementa el score en 1, comprar en 5, vender en 10.