package com.example.starter; import io.vertx.core.AbstractVerticle; import io.vertx.core.Promise; import io.vertx.core.http.HttpMethod; import io.vertx.ext.web.Router; import io.vertx.ext.web.handler.BodyHandler; import io.vertx.ext.web.handler.CorsHandler; import io.vertx.ext.auth.jwt.JWTAuth; import io.vertx.ext.web.handler.JWTAuthHandler; public class MainVerticle extends AbstractVerticle { private DatabaseService databaseService; private Router router; @Override public void start(Promise startPromise) throws Exception { databaseService = new DatabaseService(vertx); // Initialisation du fournisseur JWT JWTAuth jwtAuth = JwtAuthProvider.createJwtAuth(vertx); // Initialisation du routeur router = Router.router(vertx); router.route().handler(BodyHandler.create()); router.route().handler(CorsHandler.create() .addOrigin("*") .allowedMethod(HttpMethod.GET) .allowedMethod(HttpMethod.POST) .allowedHeader("Content-Type") .allowedHeader("Authorization")); // Protéger toutes les routes commençant par "/api/" router.route("/api/*").handler(JWTAuthHandler.create(jwtAuth)); // Initialisation des handlers de requêtes QueryObjects queryObjects = new QueryObjects(databaseService); QueryWeatherData queryWeather = new QueryWeatherData(databaseService); SetObjects setObjects = new SetObjects(databaseService); SetWeatherData setWeatherData = new SetWeatherData(databaseService); AuthHandler authHandler = new AuthHandler(databaseService, jwtAuth); QueryUsers queryUsers = new QueryUsers(databaseService); SetUser setUser = new SetUser(databaseService); setObjects.setUserHandler(setUser); queryObjects.setUserHandler(setUser); setWeatherData.setUserHandler(setUser); QueryDeleteObject RequestDeleteObject = new QueryDeleteObject(databaseService); SetRequestDeleteObject DeleteObject = new SetRequestDeleteObject(databaseService); // Déclaration des routes router.get("/objets").handler(queryObjects::getObjects); router.post("/objet").handler(queryObjects::getParticularObject); router.post("/modifObjet").handler(setObjects::setInfoObjet); router.get("/wind").handler(queryWeather::getWindInfos); router.get("/meteo").handler(queryWeather::getMeteoInfos); router.post("/addObject").handler(setObjects::newObject); router.get("/getRange").handler(queryWeather::getRangeData); router.post("/modifRangeData").handler(setWeatherData::setRangeData); router.post("/deleteObject").handler(setObjects::deleteObject); router.get("/users").handler(queryUsers::getUsers); router.post("/user").handler(queryUsers::getUser); router.post("/setUserPoints").handler(setUser::setUserPoints); router.post("/deleteUser").handler(setUser::deleteUser); router.post("/updateProfil").handler(setUser::updateUserProfile); router.post("/changePassword").handler(setUser::changeUserPassword); router.post("/publicUser").handler(queryUsers::getPublicUser); router.get("/getCategories").handler(queryObjects::getCategories); router.get("/getLocations").handler(queryObjects::getLocations); router.post("/getMeteoHome").handler(queryWeather::getMeteoInfosHomePage); router.post("/addCategories").handler(setObjects::newCategorie); router.post("/deleteCategories").handler(setObjects::deleteCategories); router.post("/requestDeleteObject").handler(RequestDeleteObject::deleteObject); router.get("/getDemandeSuppression").handler(DeleteObject::getAllDeletionRequests); router.post("/reject").handler(RequestDeleteObject::rejectDemande); // Routes d'authentification router.post("/signup").handler(authHandler::handleSignup); router.post("/login").handler(authHandler::handleLogin); // Création du serveur HTTP vertx.createHttpServer() .requestHandler(router) .listen(8888) .onSuccess(server -> { System.out.println("HTTP server started on port " + server.actualPort()); startPromise.complete(); }) .onFailure(throwable -> { throwable.printStackTrace(); startPromise.fail(throwable); }); } }