Skip to content

cesardramirez/cryptongo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Descripción

Proyecto hecho con Python (3.5.3) y MongoDB (4.0.3)

Endpoints

Ticker

GET /tickers
Descripción: Obtiene todas las criptomonedas.

  • Parámetros opcionales:
    (string) name - Busca por el nombre específico de una criptomoneda.
    (int) limit - Cantidad máxima de resultados.

  • Ejemplos:
    http://127.0.0.1:5000/tickers
    http://127.0.0.1:5000/tickers?name=Bitcoin
    http://127.0.0.1:5000/tickers?limit=10&name=Bitcoin

    Respuesta Simple:

    [
      {
        "circulating_supply": 17304600,
        "id": 1,
        "last_updated": 1538666489,
        "max_supply": 21000000,
        "name": "Bitcoin",
        "quotes": {
          "USD": {
            "market_cap": 113747701200,
            "percent_change_1h": -0.02,
            "percent_change_24h": 0.98,
            "percent_change_7d": 0.62,
            "price": 6573.26382583,
            "volume_24h": 3827024537.65621
          }
        },
        "rank": 1,
        "symbol": "BTC",
        "total_supply": 17304600,
        "website_slug": "bitcoin"
      }
    ]

GET /top-rank-20
Descripción: Obtiene las criptomonedas que tienen un ranking menor o igual a 20.

DELETE /tickers?name=<nombre>
Descripción: Elimina una criptomoneda según el nombre enviado.

  • Parámetros opcionales:
    (string) name - Busca por el nombre específico de una criptomoneda.
  • Ejemplo:
    http://127.0.0.1:5000/tickers?name=Bitcoin
  • Respuestas:
    Status: 200 OK
    { "message": "Documentos eliminados", "number": 3 }
    Status: 404 NOT FOUND
    { "error": "No se encontraron documentos" }
    
    Status: 400 BAD REQUEST
    { "error": "No se envío el parámetro name" }
    

POST /tickers
Descripción: Inserta una criptomoneda.

  • Ejemplo:
    http://127.0.0.1:5000/tickers
  • Cuerpo:
    {
      "circulating_supply": 102378911,
      "id": 1027,
      "last_updated": 1538734480,
      "max_supply": null,
      "name": "Ethereum",
      "quotes": {
        "USD": {
          "market_cap": 22675297167,
          "percent_change_1h": 0.15,
          "percent_change_24h": -1.07,
          "percent_change_7d": -2.43,
          "price": 221.484063947,
          "volume_24h": 1478256834.01358
        }
      },
      "rank": 2,
      "symbol": "ETH",
      "total_supply": 102378911,
      "website_slug": "ethereum"
    }
  • Respuestas:
    Status: 200 OK
    { "message": "Documento almacenado exitosamente" }
    Status: 404 BAD REQUEST
    { "error": "El documento ya existe" }
    { "error": "No se envío información en el body" }
    

Docker - Instalación y ejecución

Revisar que hace cada instrucción en el archivo Makefile

  1. Obtener las imágenes necesarias de Docker Hub.
    make get-images
  2. Crear la red.
    make create-network
  3. Construir las imágenes por medio del Dockerfile
    make build-development
  4. Crear e inicia los contenedores por medio del docker-compose.yml
    make start-development

Opcional

  • Detiene los contenedores.
    make stop-development
  • Restaura por medio del backup la BD de Mongo.
    make load-mongo

Comandos Docker

  • Ingresar a los contenedores
    docker exec -it crypto-mongodb-dev bash
    docker exec -it crypto-agent-dev bash
  • Eliminar los contenedores
    docker rm -f crypto-mongodb-dev crypto-agent-dev
    docker rm -f $(docker ps -qa)
  • Visualizar los logs de un servicio específico
    docker-compose logs agent
    docker logs -f crypto-agent-dev
  • Eliminar todas las imagenes
    docker rmi -f $(docker images -q)

Virtualenv - Instalación y ejecución

Ubuntu 16.x

python3 -V
wget https://bootstrap.pypa.io/get-pip.py -O ~/get-pip.py
sudo python3 ~/get-pip.py
sudo apt-get install python3-venv
git clone https://github.com/cesardramirez/cryptongo.git
cd cryptongo
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Opción alternativa (paquetes recientes)

...
source venv/bin/activate
pip install --upgrade pip
pip install pymongo
pip install flask
pip install requests
pip install pylint

Realizar backup a la Base de Datos

mongodump --host localhost --port 27017 --out backup_bd/backup-2018-10-04 --collection tickers --db cryptongo

Restaurar la Base de Datos

mongorestore --host localhost --port 27017 backup_bd/backup-2018-10-04

Insertar información reciente en la Base de Datos por medio de la API

Creará la colección insertando todas las criptomonedas existentes de Coin Market Cap.
Si existen cambios en los campos 'last_updated' y 'quotes', insertará el documento.

source venv/bin/activate
python3 agent/main.py

Ejecutar el proyecto

Por cada cambio en código se debe reiniciar el servidor.

export FLASK_APP=api/main.py
flask run

Herramientas y bibliografía

About

Platzi - MongoDB y Redis - Cryptongo (Python Flask, Docker)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages