73 lines
2.1 KiB
Java
73 lines
2.1 KiB
Java
package com.interplug.qcast.config.swagger;
|
|
|
|
import io.swagger.v3.oas.models.OpenAPI;
|
|
import io.swagger.v3.oas.models.info.Info;
|
|
import io.swagger.v3.oas.models.media.StringSchema;
|
|
import io.swagger.v3.oas.models.parameters.Parameter;
|
|
import io.swagger.v3.oas.models.servers.Server;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springdoc.core.customizers.OpenApiCustomizer;
|
|
import org.springdoc.core.models.GroupedOpenApi;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.core.env.Environment;
|
|
|
|
@Configuration
|
|
@RequiredArgsConstructor
|
|
@Slf4j
|
|
public class SwaggerConfig {
|
|
|
|
@Autowired Environment env;
|
|
|
|
@Value("${swagger.url}")
|
|
private String swaggerUrl;
|
|
|
|
@Bean
|
|
public OpenAPI baseApi() {
|
|
String activeProfile = env.getProperty("spring.profiles.active");
|
|
if (log.isDebugEnabled()) {
|
|
log.debug("Active profile: {}", activeProfile);
|
|
}
|
|
|
|
Server server = new Server();
|
|
server.setUrl(swaggerUrl);
|
|
|
|
OpenAPI openAPI = new OpenAPI();
|
|
openAPI
|
|
.info(new Info().title("QCast API").version("1.0").description("QCast API Documentation"))
|
|
.addServersItem(server);
|
|
return openAPI;
|
|
}
|
|
|
|
@Bean
|
|
public GroupedOpenApi allApi() {
|
|
return GroupedOpenApi.builder()
|
|
.group("ALL")
|
|
.packagesToScan("com.interplug.qcast.biz")
|
|
.addOpenApiCustomizer(openApiCustomizer())
|
|
.build();
|
|
}
|
|
|
|
@Bean
|
|
public OpenApiCustomizer openApiCustomizer() {
|
|
Parameter lang =
|
|
new Parameter()
|
|
.name("lang")
|
|
.description("Language")
|
|
.in("header")
|
|
.schema(new StringSchema());
|
|
return openApi ->
|
|
openApi
|
|
.getPaths()
|
|
.values()
|
|
.forEach(
|
|
pathItem ->
|
|
pathItem
|
|
.readOperations()
|
|
.forEach(operation -> operation.addParametersItem(lang)));
|
|
}
|
|
}
|