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)));
}
}