85 lines
3.7 KiB
Java
85 lines
3.7 KiB
Java
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<Void> 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);
|
|
|
|
|
|
// 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);
|
|
// 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);
|
|
});
|
|
}
|
|
}
|