From 39a08fd0b9eb70a969fdd64f49506550d53383de Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 15 Aug 2021 13:09:36 +0430 Subject: [PATCH 1/3] Extract swagger config from application class --- .../co/nilin/opex/app/config/SwaggerConfig.kt | 97 +++++++++++++++++ .../co/nilin/opex/app/MatchingGatewayApp.kt | 82 +------------- .../co/nilin/opex/app/config/SwaggerConfig.kt | 100 ++++++++++++++++++ .../co/nilin/opex/wallet/app/WalletApp.kt | 84 +-------------- .../opex/wallet/app/config/SwaggerConfig.kt | 99 +++++++++++++++++ 5 files changed, 302 insertions(+), 160 deletions(-) create mode 100644 Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt create mode 100644 MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt create mode 100644 Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..2fa89d964 --- /dev/null +++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -0,0 +1,97 @@ +package co.nilin.opex.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + +@Configuration +class SwaggerConfig { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexApi(): Docket? { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-api") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/api/v3.*")) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo? { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme? { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List? { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List? { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext? { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { true } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration? { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } +} \ No newline at end of file diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt index 5b1db6af4..5a141ca72 100644 --- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt +++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt @@ -16,90 +16,14 @@ import springfox.documentation.spi.service.contexts.SecurityContext import springfox.documentation.spring.web.plugins.Docket import springfox.documentation.swagger.web.SecurityConfiguration import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import springfox.documentation.swagger2.annotations.EnableSwagger2 import java.security.Principal import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") -class MatchingGatewayApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexMatchingGateway(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-matching-gateway") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/actuator.*").negate()) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { true } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +@EnableSwagger2 +class MatchingGatewayApp fun main(args: Array) { runApplication(*args) diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..d69c85409 --- /dev/null +++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -0,0 +1,100 @@ +package co.nilin.opex.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + + +@Configuration +class SwaggerConfig { + class MatchingGatewayApp { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexMatchingGateway(): Docket? { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-matching-gateway") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/actuator.*").negate()) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo? { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme? { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List? { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List? { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext? { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { true } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration? { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } + } +} \ No newline at end of file diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt index c512b722d..58904b28a 100644 --- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt +++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt @@ -16,92 +16,14 @@ import springfox.documentation.spi.service.contexts.SecurityContext import springfox.documentation.spring.web.plugins.Docket import springfox.documentation.swagger.web.SecurityConfiguration import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import springfox.documentation.swagger2.annotations.EnableSwagger2 import java.security.Principal import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") -class WalletApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexWallet(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-wallet") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/actuator.*").negate()) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { - it.requestMappingPattern().matches(Regex("^/(balanceOf|owner)/.*")) - } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +@EnableSwagger2 +class WalletApp fun main(args: Array) { runApplication(*args) diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt new file mode 100644 index 000000000..a1dc797c2 --- /dev/null +++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt @@ -0,0 +1,99 @@ +package co.nilin.opex.wallet.app.config + +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.core.annotation.AuthenticationPrincipal +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.builders.OAuthBuilder +import springfox.documentation.builders.PathSelectors +import springfox.documentation.builders.RequestParameterBuilder +import springfox.documentation.service.* +import springfox.documentation.spi.DocumentationType +import springfox.documentation.spi.service.contexts.SecurityContext +import springfox.documentation.spring.web.plugins.Docket +import springfox.documentation.swagger.web.SecurityConfiguration +import springfox.documentation.swagger.web.SecurityConfigurationBuilder +import java.security.Principal +import java.util.* + +@Configuration +class SwaggerConfig { + @Value("\${swagger.authUrl}") + val authUrl: String = "" + + @Bean + fun opexWallet(): Docket? { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-wallet") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/actuator.*").negate()) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() + ) + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } + + private fun apiInfo(): ApiInfo? { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } + + private fun oauth(): SecurityScheme? { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } + + private fun scopes(): List? { + return listOf(AuthorizationScope("openid", "OpenId")) + } + + private fun grantTypes(): List? { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } + + private fun securityContext(): SecurityContext? { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { + it.requestMappingPattern().matches(Regex("^/(balanceOf|owner)/.*")) + } + .build() + } + + @Bean + fun securityInfo(): SecurityConfiguration? { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() + } +} \ No newline at end of file From 59efa8a0f1fea8c8e03b170dbae6d5cbf47d3095 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 15 Aug 2021 13:10:09 +0430 Subject: [PATCH 2/3] Fix api application class --- .../main/kotlin/co/nilin/opex/app/ApiApp.kt | 80 +------------------ 1 file changed, 1 insertion(+), 79 deletions(-) diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt index a6c4103a4..338e2bab1 100644 --- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt +++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt @@ -22,85 +22,7 @@ import java.util.Collections.singletonList @SpringBootApplication @ComponentScan("co.nilin.opex") @EnableSwagger2 -class ApiApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" - - @Bean - fun opexApi(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-api") - .apiInfo(apiInfo()) - .select() - .paths(regex("^/api/v3.*")) - .build() - .globalRequestParameters( - singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) - ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(singletonList(oauth())) - .securityContexts(singletonList(securityContext())) - } - - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } - - @Bean - fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } - - fun scopes(): List? { - return emptyList() - } - - fun grantTypes(): List? { - val tokenUrl = "${authUrl}/auth/realms/mixchange/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return singletonList(grantType) - } - - @Bean - fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(singletonList(securityReference)) - .operationSelector { true } - .build() - } - - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("mixchange") - .appName("opex") - .scopeSeparator(",") - .build() - } -} +class ApiApp fun main(args: Array) { runApplication(*args) From 189b00ac2847190c1556a6d4c9b5b8439a7c14bc Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 15 Aug 2021 14:59:07 +0430 Subject: [PATCH 3/3] Fix swagger class definition --- .../co/nilin/opex/app/config/SwaggerConfig.kt | 14 +- .../co/nilin/opex/app/config/SwaggerConfig.kt | 134 +++++++++--------- .../opex/wallet/app/config/SwaggerConfig.kt | 14 +- 3 files changed, 80 insertions(+), 82 deletions(-) diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt index 2fa89d964..c9fe3d51b 100644 --- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt +++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -23,7 +23,7 @@ class SwaggerConfig { val authUrl: String = "" @Bean - fun opexApi(): Docket? { + fun opexApi(): Docket { return Docket(DocumentationType.SWAGGER_2) .groupName("opex-api") .apiInfo(apiInfo()) @@ -46,7 +46,7 @@ class SwaggerConfig { .securityContexts(Collections.singletonList(securityContext())) } - private fun apiInfo(): ApiInfo? { + private fun apiInfo(): ApiInfo { return ApiInfoBuilder() .title("OPEX API") .description("Backend for opex exchange.") @@ -56,7 +56,7 @@ class SwaggerConfig { .build() } - private fun oauth(): SecurityScheme? { + private fun oauth(): SecurityScheme { return OAuthBuilder() .name("opex") .grantTypes(grantTypes()) @@ -64,17 +64,17 @@ class SwaggerConfig { .build() } - private fun scopes(): List? { + private fun scopes(): List { return listOf(AuthorizationScope("openid", "OpenId")) } - private fun grantTypes(): List? { + private fun grantTypes(): List { val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) return Collections.singletonList(grantType) } - private fun securityContext(): SecurityContext? { + private fun securityContext(): SecurityContext { val securityReference = SecurityReference.builder() .reference("opex") .scopes(emptyArray()) @@ -86,7 +86,7 @@ class SwaggerConfig { } @Bean - fun securityInfo(): SecurityConfiguration? { + fun securityInfo(): SecurityConfiguration { return SecurityConfigurationBuilder.builder() .clientId("admin-cli") .realm("opex") diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt index d69c85409..37abadf5e 100644 --- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt +++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt @@ -20,81 +20,79 @@ import java.util.* @Configuration class SwaggerConfig { - class MatchingGatewayApp { - @Value("\${swagger.authUrl}") - val authUrl: String = "" + @Value("\${swagger.authUrl}") + val authUrl: String = "" - @Bean - fun opexMatchingGateway(): Docket? { - return Docket(DocumentationType.SWAGGER_2) - .groupName("opex-matching-gateway") - .apiInfo(apiInfo()) - .select() - .paths(PathSelectors.regex("^/actuator.*").negate()) - .build() - .globalRequestParameters( - Collections.singletonList( - RequestParameterBuilder() - .name("content-type") - .description("content-type") - .`in`(ParameterType.HEADER) - .required(true) - .build() - ) + @Bean + fun opexMatchingGateway(): Docket { + return Docket(DocumentationType.SWAGGER_2) + .groupName("opex-matching-gateway") + .apiInfo(apiInfo()) + .select() + .paths(PathSelectors.regex("^/actuator.*").negate()) + .build() + .globalRequestParameters( + Collections.singletonList( + RequestParameterBuilder() + .name("content-type") + .description("content-type") + .`in`(ParameterType.HEADER) + .required(true) + .build() ) - .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) - .useDefaultResponseMessages(false) - .securitySchemes(Collections.singletonList(oauth())) - .securityContexts(Collections.singletonList(securityContext())) - } + ) + .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java) + .useDefaultResponseMessages(false) + .securitySchemes(Collections.singletonList(oauth())) + .securityContexts(Collections.singletonList(securityContext())) + } - private fun apiInfo(): ApiInfo? { - return ApiInfoBuilder() - .title("OPEX API") - .description("Backend for opex exchange.") - .license("MIT License") - .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") - .version("0.1") - .build() - } + private fun apiInfo(): ApiInfo { + return ApiInfoBuilder() + .title("OPEX API") + .description("Backend for opex exchange.") + .license("MIT License") + .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE") + .version("0.1") + .build() + } - private fun oauth(): SecurityScheme? { - return OAuthBuilder() - .name("opex") - .grantTypes(grantTypes()) - .scopes(scopes()) - .build() - } + private fun oauth(): SecurityScheme { + return OAuthBuilder() + .name("opex") + .grantTypes(grantTypes()) + .scopes(scopes()) + .build() + } - private fun scopes(): List? { - return listOf(AuthorizationScope("openid", "OpenId")) - } + private fun scopes(): List { + return listOf(AuthorizationScope("openid", "OpenId")) + } - private fun grantTypes(): List? { - val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" - val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) - return Collections.singletonList(grantType) - } + private fun grantTypes(): List { + val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" + val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) + return Collections.singletonList(grantType) + } - private fun securityContext(): SecurityContext? { - val securityReference = SecurityReference.builder() - .reference("opex") - .scopes(emptyArray()) - .build() - return SecurityContext.builder() - .securityReferences(Collections.singletonList(securityReference)) - .operationSelector { true } - .build() - } + private fun securityContext(): SecurityContext { + val securityReference = SecurityReference.builder() + .reference("opex") + .scopes(emptyArray()) + .build() + return SecurityContext.builder() + .securityReferences(Collections.singletonList(securityReference)) + .operationSelector { true } + .build() + } - @Bean - fun securityInfo(): SecurityConfiguration? { - return SecurityConfigurationBuilder.builder() - .clientId("admin-cli") - .realm("opex") - .appName("opex") - .scopeSeparator(",") - .build() - } + @Bean + fun securityInfo(): SecurityConfiguration { + return SecurityConfigurationBuilder.builder() + .clientId("admin-cli") + .realm("opex") + .appName("opex") + .scopeSeparator(",") + .build() } } \ No newline at end of file diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt index a1dc797c2..76b80d954 100644 --- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt +++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt @@ -23,7 +23,7 @@ class SwaggerConfig { val authUrl: String = "" @Bean - fun opexWallet(): Docket? { + fun opexWallet(): Docket { return Docket(DocumentationType.SWAGGER_2) .groupName("opex-wallet") .apiInfo(apiInfo()) @@ -46,7 +46,7 @@ class SwaggerConfig { .securityContexts(Collections.singletonList(securityContext())) } - private fun apiInfo(): ApiInfo? { + private fun apiInfo(): ApiInfo { return ApiInfoBuilder() .title("OPEX API") .description("Backend for opex exchange.") @@ -56,7 +56,7 @@ class SwaggerConfig { .build() } - private fun oauth(): SecurityScheme? { + private fun oauth(): SecurityScheme { return OAuthBuilder() .name("opex") .grantTypes(grantTypes()) @@ -64,17 +64,17 @@ class SwaggerConfig { .build() } - private fun scopes(): List? { + private fun scopes(): List { return listOf(AuthorizationScope("openid", "OpenId")) } - private fun grantTypes(): List? { + private fun grantTypes(): List { val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token" val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl) return Collections.singletonList(grantType) } - private fun securityContext(): SecurityContext? { + private fun securityContext(): SecurityContext { val securityReference = SecurityReference.builder() .reference("opex") .scopes(emptyArray()) @@ -88,7 +88,7 @@ class SwaggerConfig { } @Bean - fun securityInfo(): SecurityConfiguration? { + fun securityInfo(): SecurityConfiguration { return SecurityConfigurationBuilder.builder() .clientId("admin-cli") .realm("opex")