bigomby / bibus-reservas-api Goto Github PK
View Code? Open in Web Editor NEWAPI RESTful para la reserva de salas de la Biblioteca de la Universidad de Sevilla.
Home Page: https://bigomby.github.io/bibus-reservas-api/
API RESTful para la reserva de salas de la Biblioteca de la Universidad de Sevilla.
Home Page: https://bigomby.github.io/bibus-reservas-api/
El scraper tras realizar la reserva debe también obtener el ID de dicha reserva y devolverlo como
respuesta.
El scraper debería ser capaz de obtener información sobre el estado de las salas. Esta función no requiere de autenticación usando SSO
, basta con consultar https://bibing.us.es/estado_salas/BIA, parear el HTML y obtener los campos pertinentes.
Crear controlador para atender las peticiones de consulta de salas: La respuesta debe tener el siguiente formato:
GET /salas
[
{
"id": "1",
"turn": [
{
"id": "1",
"time": "9:00 - 10:30",
"available": true
},{
"id": "2",
"time": "10:30 - 12:30",
"available": true
},{
"id": "3",
"time": "12:30 - 14:30",
"available": true
},{
"id": "4",
"time": "14:30 - 16:30",
"available": true
},{
"id": "5",
"time": "16:30 - 18:30",
"available": true
},{
"id": "6",
"time": "18:30 - 21:00",
"available": true
}
]
},
{
"id": "7",
"turns": [
{
"id": "1",
"time": "9:00 - 11:00",
"available": true
},{
"id": "2",
"time": "11:00 - 13:00",
"available": true
},{
"id": "3",
"time": "13:00 - 15:00",
"available": true
},{
"id": "4",
"time": "15:00 - 17:00",
"available": true
},{
"id": "5",
"time": "17:00 - 19:00",
"available": true
},{
"id": "6",
"time": "19:00 - 21:00",
"available": true
}
]
}
]
GET /salas/8
{
"id": "8",
"turns": [
{
"id": "1",
"time": "9:00 - 11:00",
"available": true
},{
"id": "2",
"time": "11:00 - 13:00",
"available": true
},{
"id": "3",
"time": "13:00 - 15:00",
"available": true
},{
"id": "4",
"time": "15:00 - 17:00",
"available": true
},{
"id": "5",
"time": "17:00 - 19:00",
"available": true
},{
"id": "6",
"time": "19:00 - 21:00",
"available": true
}
]
}
Añadir la posibilidad de cancelar una reserva dada una fecha.
Cuando hay salas en estado "Cerrada" el cálculo de la sala y el turno es erróneo. Probablemente se debe a que para encontrar en número de elementos en la tabla se usan sólo los que tienen un enlace y las salas cerradas no lo tienen.
Para cancelar una sala se envía una petición HTTP DELETE con el ID de reservan en el body lo cual no es lo idea, ya que, aunque la norma lo permite, algunas librerías no permiten enviar datos en el body cuando se realiza una petición DELETE.
Debe enviarse la ID de reserva como parte del path en la url.
El scraper debe ser capaz de realizar una reserva de una sala. El procedimiento consiste en enviar un mensaje HTTP POST a la URL:
https://bibing.us.es/reserva_salas
El mensaje debe ser tipo application/x-www-form-urlencoded con los siguientes campos:
nombre: <nombre+separado+por+signos+más>
uvus: <uvus>
correo: <correo para la notificación>
sala: <numero de la sala>
turno: <numero del turno>
fecha: <DD-MM-AAAA>
btn_reservar: ""
Este mensaje debe llevar la Cookie
PHPSESSID=<ticketID>
. El ticketID
se obtiene en el proceso de login.
Debe existir una forma tanto de realizar reservas como de cancelarlas.
El scraper debe ser capaz de loguearse en el sistema de autenticación usado por la plataforma (SSO). La finalidad es obtener el ticketID
que permite realizar peticiones autenticadas. El proceso es el siguiente:
https://sso.us.es/CAS/index.php/login?service=https%3A%2F%2Fbibing.us.es%2Freserva_salas%2FBIA
adAS_i18n_theme: 'es',
adAS_mode: 'authn',
adAS_username: <username>,
adAS_password: <password>,
https://bibing.us.es/reserva_salas/?ticket=<ticketID>
Location
de la cabecera HTTP de la respuesta.Location
a la URL:
https://bibing.us.es/reserva_salas/BIA
Cookie
PHPSESSID
que es la queNOTA: Es cierto que en paso ya se dispone del ticketID
, sin embargo, es necesario enviar el mensaje POST del paso 3 para que el sistema autorice las peticiones.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.