mirror of https://github.com/usbharu/Hideout.git
				
				
				
			
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| package {{basePackage}}
 | |
| 
 | |
| import org.springframework.context.annotation.Bean
 | |
| import org.springframework.stereotype.Controller
 | |
| import org.springframework.web.bind.annotation.RequestMapping
 | |
| {{#sourceDocumentationProvider}}
 | |
|     import com.fasterxml.jackson.dataformat.yaml.YAMLMapper
 | |
|     import org.springframework.beans.factory.annotation.Value
 | |
|     import org.springframework.core.io.Resource
 | |
|     import org.springframework.util.StreamUtils
 | |
|     import org.springframework.web.bind.annotation.ResponseBody
 | |
|     import org.springframework.web.bind.annotation.GetMapping
 | |
| {{/sourceDocumentationProvider}}
 | |
| {{^sourceDocumentationProvider}}
 | |
|     {{#useSwaggerUI}}
 | |
|         import org.springframework.web.bind.annotation.ResponseBody
 | |
|         import org.springframework.web.bind.annotation.GetMapping
 | |
|     {{/useSwaggerUI}}
 | |
| {{/sourceDocumentationProvider}}
 | |
| {{#reactive}}
 | |
|     import org.springframework.web.reactive.function.server.HandlerFunction
 | |
|     import org.springframework.web.reactive.function.server.RequestPredicates.GET
 | |
|     import org.springframework.web.reactive.function.server.RouterFunction
 | |
|     import org.springframework.web.reactive.function.server.RouterFunctions.route
 | |
|     import org.springframework.web.reactive.function.server.ServerResponse
 | |
|     import java.net.URI
 | |
| {{/reactive}}
 | |
| {{#sourceDocumentationProvider}}
 | |
|     import java.nio.charset.Charset
 | |
| {{/sourceDocumentationProvider}}
 | |
| 
 | |
| /**
 | |
| * Home redirection to OpenAPI api documentation
 | |
| */
 | |
| @Controller
 | |
| class HomeController {
 | |
| {{#useSwaggerUI}}
 | |
|     {{^springDocDocumentationProvider}}
 | |
|         {{#sourceDocumentationProvider}}
 | |
|             private val apiDocsPath = "/openapi.json"
 | |
|         {{/sourceDocumentationProvider}}
 | |
|         {{#springFoxDocumentationProvider}}
 | |
|             private val apiDocsPath = "/v2/api-docs"
 | |
|         {{/springFoxDocumentationProvider}}
 | |
|     {{/springDocDocumentationProvider}}
 | |
| {{/useSwaggerUI}}
 | |
| {{#sourceDocumentationProvider}}
 | |
|     private val yamlMapper = YAMLMapper()
 | |
| 
 | |
|     @Value("classpath:/openapi.yaml")
 | |
|     private lateinit var openapi: Resource
 | |
| 
 | |
|     @Bean
 | |
|     fun openapiContent(): String {
 | |
|     return openapi.inputStream.use {
 | |
|     StreamUtils.copyToString(it, Charset.defaultCharset())
 | |
|     }
 | |
|     }
 | |
| 
 | |
|     @GetMapping(value = ["/openapi.yaml"], produces = ["application/vnd.oai.openapi"])
 | |
|     @ResponseBody
 | |
|     fun openapiYaml(): String = openapiContent()
 | |
| 
 | |
|     @GetMapping(value = ["/openapi.json"], produces = ["application/json"])
 | |
|     @ResponseBody
 | |
|     fun openapiJson(): Any = yamlMapper.readValue(openapiContent(), Any::class.java)
 | |
| {{/sourceDocumentationProvider}}
 | |
| {{#useSwaggerUI}}
 | |
|     {{^springDocDocumentationProvider}}
 | |
| 
 | |
|         @GetMapping(value = ["/swagger-config.yaml"], produces = ["text/plain"])
 | |
|         @ResponseBody
 | |
|         fun swaggerConfig(): String = "url: $apiDocsPath\n"
 | |
|     {{/springDocDocumentationProvider}}
 | |
|     {{#reactive}}
 | |
| 
 | |
|         @Bean
 | |
|         fun index(): RouterFunction
 | |
|         <ServerResponse> = route(
 | |
|             GET("/"), HandlerFunction
 | |
|         <ServerResponse> {
 | |
|             ServerResponse.temporaryRedirect(URI.create("swagger-ui.html")).build()
 | |
|             })
 | |
|     {{/reactive}}
 | |
|     {{^reactive}}
 | |
| 
 | |
|             @RequestMapping("/")
 | |
|             fun index(): String = "redirect:swagger-ui.html"
 | |
|     {{/reactive}}
 | |
| {{/useSwaggerUI}}
 | |
|     }
 |