Faaba API est une API de covoiturage permettant à des utilisateurs de proposer et de réserver des trajets partagés à des prix abordables.
-
Cloner le repository:
git clone https://github.com/mhgbtc/faaba_app.git cd faaba_app/
-
Créer l'image docker:
docker build -t faaba-app .
-
Démarrer le conteneur:
docker run -p 5000:5000 faaba-app
-
L'application est maintenant accessible sur
http://localhost:5000
.
-
Cloner le repository:
git clone https://github.com/mhgbtc/faaba_app.git cd faaba_app/
-
Créer un environnement virtuel et activer-le:
python3 -m venv env source env/bin/activate
-
Installer les dépendances:
pip install -r requirements.txt
-
Lancer l'application:
cd app/ export FLASK_APP=app.py export FLASK_DEBUG=true flask run
-
L'application est maintenant accessible sur
http://localhost:5000
.
L'API Faaba propose les points de terminaisons suivants:
POST /register
: permet à un utilisateur de s'inscrire et d'obtenir un token JWTPOST /login
: permet à un utilisateur de se connecter et d'obtenir un token JWTGET /rides
: retourne la liste des trajets disponiblesGET /rides/<ride_id>
: retourne les détails d'un trajet spécifiquePOST /rides
: permet à un utilisateur connecté de créer un nouveau trajetPUT /rides/<ride_id>
: permet à l'utilisateur ayant créé le trajet de le mettre à jourDELETE /rides/<ride_id>
: permet à l'utilisateur ayant créé le trajet de le supprimerGET /bookings
: retourne la liste des réservations disponiblesGET /bookings/<ride_id>
: retourne les détails d'une réservation spécifiquePOST /bookings
: permet à un utilisateur connecté de créer une nouvelle réservationPUT /bookings/<ride_id>
: permet à l'utilisateur ayant créé la réservation de la mettre à jourDELETE /bookings/<ride_id>
: permet à l'utilisateur ayant créé la réservation de la supprimer
Pour les points de terminaisons qui nécessitent une authentification, vous devez inclure le token JWT dans le header Authorization
avec le format suivant: Bearer <votre_token>
Les tests sont exécutés en utilisant unittest. Pour exécuter les tests, exécutez :
python3 test.py
.
- S'inscrire:
POST /register
{
"email" : "test7@gmail.com",
"password" : "Test1234",
"confirm_password" : "Test1234"
}
Réponse :
{
"created": 5,
"success": true,
"token": "<votre_token>"
}
- Se connecter
POST /login
{
"email" : "test7@gmail.com",
"password" : "Test1234"
}
Réponse :
{
"logged": 5,
"success": true,
"token": "<votre_token>"
}
- Obtenir la liste des trajets disponibles
GET /rides
Réponse :
{
"rides": [
{
"arrival": "Calavi",
"departure": "Porto-Novo",
"departure_date": "Mon, 30 Jan 2023 15:45:18 GMT",
"driver_id": 1,
"estimated_arrival_date": "Tue, 31 Jan 2023 15:45:18 GMT",
"id": 1,
"seats": 1
},
{
"arrival": "Cotonou",
"departure": "Port-Louis",
"departure_date": "Mon, 30 Jan 2023 15:45:18 GMT",
"driver_id": 2,
"estimated_arrival_date": "Tue, 31 Jan 2023 15:45:18 GMT",
"id": 3,
"seats": 5
}
],
"success": true
}
- Option Recherche : Obtenir la liste des trajets disponibles par recherche
GET /rides
{
"arrival": "Calavi",
"departure": "Porto"
}
Réponse :
{
"rides": [
{
"arrival": "Calavi",
"departure": "Porto-Novo",
"departure_date": "Mon, 30 Jan 2023 15:45:18 GMT",
"driver_id": 1,
"estimated_arrival_date": "Tue, 31 Jan 2023 15:45:18 GMT",
"id": 1,
"seats": 1
}
],
"success": true
}
Pour les points de terminaison restants, tâchez de renseigner le token issu de l'inscription ou connexion.
Header: Authorization: Bearer <votre token>
- Publier un nouveau trajet
POST /rides
{
"arrival": "Sado",
"departure": "Gbeko",
"departure_date": "2023-02-20 10:00:00",
"driver_id": 4,
"estimated_arrival_date": "2023-03-25 14:00:00",
"seats": 1
}
Réponse :
{
"created": 5,
"success": true
}
- Faire une réservation
POST /bookings
{
"passenger_id": 4,
"ride_id": 1
}
Réponse :
{
"created": 3,
"success": true
}