package kr.re.etri.autoflow.swagger; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; 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.servers.Server; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; @Configuration public class OpenAPIConfig { private static final String SECURITY_SCHEME_NAME = "bezkoder-jwt-cookie"; private static final String PRODUCTION_SERVER_URL = "http://cuuva.com:2480/autoflow"; private static final String LOCAL_SERVER_URL = "http://localhost:80"; @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .components(createComponents()) .addSecurityItem(createSecurityRequirement()) .info(createApiInfo()) .servers(createServerList()); } private Components createComponents() { return new Components().addSecuritySchemes(SECURITY_SCHEME_NAME, new SecurityScheme() .name("bezkoder-jwt") // 쿠키 이름 .type(SecurityScheme.Type.APIKEY) .in(SecurityScheme.In.COOKIE) ); } private SecurityRequirement createSecurityRequirement() { return new SecurityRequirement().addList(SECURITY_SCHEME_NAME); } private Info createApiInfo() { return new Info() .title("Autoflow API") .description("Autoflow 서비스의 Swagger 문서") .version("1.0.0") .contact(new Contact() .name("API Support") .email("jhg88@cuuva.com")) .license(new License() .name("CUUVA") .url("http://cuuva.com")); } private List createServerList() { return List.of( new Server().url(PRODUCTION_SERVER_URL).description("Production Server"), new Server().url(LOCAL_SERVER_URL).description("Local Server") ); } }