Openapi read oauth url from properties

This commit is contained in:
2026-01-15 16:09:48 +01:00
parent 92c731a30f
commit 10507c070e
2 changed files with 47 additions and 13 deletions

View File

@@ -9,22 +9,32 @@ import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@Configuration @Configuration
@EnableConfigurationProperties(TwitchOAuthProperties.class)
public class OpenApiConfig { public class OpenApiConfig {
private static final String TWITCH_OAUTH_SCHEME = "twitchOAuth"; private static final String TWITCH_OAUTH_SCHEME = "twitchOAuth";
private final TwitchOAuthProperties twitchProps;
public OpenApiConfig(TwitchOAuthProperties twitchProps) {
this.twitchProps = twitchProps;
}
@Bean @Bean
public OpenAPI imgfloatOpenAPI() { public OpenAPI imgfloatOpenAPI() {
return new OpenAPI() return new OpenAPI()
.components(new Components().addSecuritySchemes(TWITCH_OAUTH_SCHEME, twitchOAuthScheme())) .components(new Components().addSecuritySchemes(
TWITCH_OAUTH_SCHEME,
twitchOAuthScheme()
))
.addSecurityItem(new SecurityRequirement().addList(TWITCH_OAUTH_SCHEME)) .addSecurityItem(new SecurityRequirement().addList(TWITCH_OAUTH_SCHEME))
.info( .info(new Info()
new Info() .title("Imgfloat API")
.title("Imgfloat API") .description("OpenAPI documentation for Imgfloat admin and broadcaster APIs.")
.description("OpenAPI documentation for Imgfloat admin and broadcaster APIs.") .version("v1")
.version("v1")
); );
} }
@@ -32,12 +42,10 @@ public class OpenApiConfig {
return new SecurityScheme() return new SecurityScheme()
.name(TWITCH_OAUTH_SCHEME) .name(TWITCH_OAUTH_SCHEME)
.type(SecurityScheme.Type.OAUTH2) .type(SecurityScheme.Type.OAUTH2)
.flows( .flows(new OAuthFlows().authorizationCode(
new OAuthFlows().authorizationCode( new OAuthFlow()
new OAuthFlow() .authorizationUrl(twitchProps.getAuthorizationUri())
.authorizationUrl("https://id.twitch.tv/oauth2/authorize") .tokenUrl(twitchProps.getTokenUri())
.tokenUrl("https://id.twitch.tv/oauth2/token") ));
)
);
} }
} }

View File

@@ -0,0 +1,26 @@
package dev.kruhlmann.imgfloat.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.security.oauth2.client.provider.twitch")
public class TwitchOAuthProperties {
private String authorizationUri;
private String tokenUri;
public String getAuthorizationUri() {
return authorizationUri;
}
public void setAuthorizationUri(String authorizationUri) {
this.authorizationUri = authorizationUri;
}
public String getTokenUri() {
return tokenUri;
}
public void setTokenUri(String tokenUri) {
this.tokenUri = tokenUri;
}
}