Files
Stirling-PDF/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

68 lines
2.8 KiB
Java
Raw Normal View History

2024-01-03 17:59:04 +00:00
package stirling.software.SPDF.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
2024-01-03 17:59:04 +00:00
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
2024-01-03 17:59:04 +00:00
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.RequiredArgsConstructor;
2024-01-03 17:59:04 +00:00
import stirling.software.SPDF.model.ApplicationProperties;
@Configuration
@RequiredArgsConstructor
2024-01-03 17:59:04 +00:00
public class OpenApiConfig {
private final ApplicationProperties applicationProperties;
private static final String DEFAULT_TITLE = "Stirling PDF API";
private static final String DEFAULT_DESCRIPTION =
"API documentation for all Server-Side processing.\n"
+ "Please note some functionality might be UI only and missing from here.";
2024-01-03 17:59:04 +00:00
@Bean
public OpenAPI customOpenAPI() {
String version = getClass().getPackage().getImplementationVersion();
if (version == null) {
// default version if all else fails
version = "1.0.0";
2024-01-03 17:59:04 +00:00
}
Info info =
new Info()
.title(DEFAULT_TITLE)
.version(version)
.license(
new License()
.name("MIT")
.url(
"https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/refs/heads/main/LICENSE")
.identifier("MIT"))
.termsOfService("https://www.stirlingpdf.com/terms")
.contact(
new Contact()
.name("Stirling Software")
.url("https://www.stirlingpdf.com")
.email("contact@stirlingpdf.com"))
.description(DEFAULT_DESCRIPTION);
2024-01-03 17:59:04 +00:00
if (!applicationProperties.getSecurity().getEnableLogin()) {
return new OpenAPI().components(new Components()).info(info);
2024-01-03 17:59:04 +00:00
} else {
SecurityScheme apiKeyScheme =
new SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER)
.name("X-API-KEY");
2024-01-03 17:59:04 +00:00
return new OpenAPI()
.components(new Components().addSecuritySchemes("apiKey", apiKeyScheme))
.info(info)
2024-01-03 17:59:04 +00:00
.addSecurityItem(new SecurityRequirement().addList("apiKey"));
}
}
}