OpenApiConfig.java
package com.archiweb.config;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenApiConfig {
@Value("${spring.profiles.active:dev}")
private String activeProfile;
@Bean
public OpenAPI archiwebOpenAPI() {
OpenAPI openAPI = new OpenAPI()
.info(new Info()
.title("ArchiWeb Backend API")
.description("Documentation de l'API ArchiWeb (authentification, users, codes, participations, stats)")
.version("v1.0")
.license(new License().name("Apache 2.0").url("http://springdoc.org")))
.externalDocs(new ExternalDocumentation()
.description("Projet ArchiWeb - GitLab")
.url("https://gitlab.com/karim-aitbouaddi/archiweb-g2-tiptop-backend"))
.addSecurityItem(new SecurityRequirement().addList("Bearer Authentication"))
.components(new Components()
.addSecuritySchemes("Bearer Authentication", new SecurityScheme()
.name("Authorization")
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")
.description("Insère ici ton token JWT : **Bearer + espace + token**")));
// Ajouter les serveurs selon l'environnement
Server localServer = new Server()
.url("http://localhost:8080")
.description("Serveur Local (Développement)");
if ("integration".equals(activeProfile)) {
Server integrationServer = new Server()
.url("https://integ.dsp5-archi-o24a-15m-g2.fr")
.description("Serveur Intégration");
openAPI.addServersItem(integrationServer);
openAPI.addServersItem(localServer);
} else if ("prod".equals(activeProfile) || "production".equals(activeProfile)) {
Server prodServer = new Server()
.url("https://dsp5-archi-o24a-15m-g2.fr")
.description("Serveur Production");
openAPI.addServersItem(prodServer);
openAPI.addServersItem(localServer);
} else {
// Dev par défaut
Server integrationServer = new Server()
.url("https://integ.dsp5-archi-o24a-15m-g2.fr")
.description("Serveur Intégration");
openAPI.addServersItem(localServer);
openAPI.addServersItem(integrationServer);
}
return openAPI;
}
}