Skip to content

API RESTful para la reserva de salas de la Biblioteca de la Universidad de Sevilla.

Notifications You must be signed in to change notification settings

Bigomby/bibus-reservas-api

Repository files navigation

Build Status

bibus-reservas-api

API RESTful para acceder a la aplicación de reserva de salas de la Biblioteca de la Universidad de Sevilla.

Se puede encontrar la API en funcionamiento en: http://api.salas.gonebe.com/

¿Por qué existe esta API?

Corre el año 2018. Todo el mundo utiliza smartphones, apps, webs adaptadas a dispositivos móviles, bots, etc. Sin embargo, la Biblioteca de la US ofrece un sistema de reserva de salas mediante una web obsoleta y poco flexible.

La aplicación web de reserva de salas no dispone de una API para interactuar con ella, sino que su funcionamiento consiste en enviar HTML ya renderizado. Esto dificulta el desarrollo aplicaciones que usen este sistema, por ejemplo, una app para Android o un bot de Telegram.

Por todo esto nace esta API con el objetivo de ofrecer una forma de interactuar con el sistema de reserva de salas de forma sencilla. Usando esta API, crear una aplicación que sea capaz de consultar y reservar salas se convierte en un proceso mucho más simple, pues no será necesario tener que realizar scraping y otras técnicas para obtener la información necesaria.

Estado de la aplicación

Actualmente el programa se encuentra en desarrollo por lo que no se espera que funcione de forma estable. El funcionamiento interno y la API puede cambiar en cualquier momento (y lo hará) hasta la versión 1.0.

Por ahora sólo funciona con la Biblioteca de la Escuela Técnica Superior de Ingenieros, aunque próximamente se añadirán más centros.

Uso

Para ejecutar la aplicación basta con seguir los siguientes pasos:

git clone https://github.com/Bigomby/bibus-reservas-api.git && cd bibus-reservas-api
npm install && npm run build && npm run app

Usando Docker

docker run -p 8080:8080 bigomby/bibus-reservas-api

Configuración

  • NODE_ENV ['development', 'production', 'test']: Entorno de ejecución.
  • PORT [8080]: Puerto para la escucha del servidor.
  • LOG_LEVEL ['error', 'warn', 'info', 'verbose', 'debug', 'silly']: Nivel de depuración.

Ejemplo

A continuación se muestra un ejemplo de cómo sería una pequeño script hecho en Python que obtendría el estado de las salas y lo imprime por pantalla.

# consulta_salas.py

import requests

class colors:
    OK = "\033[92m"
    FAIL = "\033[91m"
    GRAY = "\033[90m"
    ENDC = "\033[0m"
    BOLD = "\033[1m"

def print_slot(slot):
    print(' ▶ [{}]:'.format(slot["timeFrame"]), end="")
    if slot["status"] == "available":
        print("\t" + colors.OK + "Available" + colors.ENDC)
    elif slot["status"] == "reserved":
        print("\t" + colors.FAIL + "Reserved" + colors.ENDC)
    else:
        print("\t" + colors.GRAY + "Closed" + colors.ENDC)

def print_room(room):
    print("-" * 35)
    print(colors.BOLD + str(room).center(35, " ") + colors.ENDC)
    print("-" * 35)

response = requests.get("http://api.salas.gonebe.com/libraries/bia/rooms")
assert response.status_code == 200

for room in response.json():
    print_room(room["name"])
    for slot in room["slots"]:
        print_slot(slot)

About

API RESTful para la reserva de salas de la Biblioteca de la Universidad de Sevilla.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published