Compare commits

...

21 Commits

Author SHA1 Message Date
Denis Kazantsev 5cdcce465f fixed test 2022-04-08 21:01:42 +03:00
Denis Kazantsev 7bec311bad resolved merge conflicts 2022-04-08 21:01:24 +03:00
Denis Kazantsev 7f109a3dec fixed test 2022-04-08 20:58:27 +03:00
Denis Kazantsev 186990a93e Added test controller 2022-04-08 20:55:24 +03:00
Denis Kazantsev 4eea57c5cf Added path in componentScan 2022-04-08 20:52:31 +03:00
Denis Kazantsev 3e4e4533ca Added response, refactored service, advice, controller 2022-04-08 20:48:21 +03:00
Denis Kazantsev 5f71c60997 Fixed merge conflict 2022-04-08 19:45:57 +03:00
Denis Kazantsev b7a000e2ab Renamed service, renamed property 2022-04-08 19:33:24 +03:00
Denis Kazantsev 8b39e59c46 Moved properties, modified readMe 2022-04-08 18:19:51 +03:00
Denis Kazantsev 4b026ec78c Moved service, changed componentScan, refactored serverInfoAdvice 2022-04-08 18:08:14 +03:00
Denis Kazantsev e211caec2f fixed controller 2022-04-08 17:39:53 +03:00
Denis Kazantsev a5aa1d6931 Implemented serverInfoService 2022-04-08 13:11:27 +03:00
Denis Kazantsev ee0f56cf57 Implemented serverInfoController 2022-04-08 13:10:45 +03:00
Denis Kazantsev aebc35ca3e Added readMe 2022-04-08 12:24:52 +03:00
Denis Kazantsev 035ad553a5 Added readMe 2022-04-08 12:15:19 +03:00
Denis Kazantsev 85e5eecfbc Added controller 2022-04-08 00:10:53 +03:00
Denis Kazantsev 9cfe8ee7ba Fixed test 2022-04-07 22:54:35 +03:00
Denis Kazantsev 66c99227b9 Added test 2022-04-07 22:53:11 +03:00
Denis Kazantsev 91e23327a2 Renamed annotation 2022-04-07 22:41:46 +03:00
Denis Kazantsev 9cb8099371 Renamed package, added annotations 2022-04-07 22:36:42 +03:00
Denis Kazantsev cffefac613 Added new module serverInfo 2022-04-07 21:40:12 +03:00
7 changed files with 95 additions and 12 deletions

View File

@ -30,11 +30,13 @@ class ServerInfoAdvice(
response: ServerHttpResponse
): Any? {
for (service in serverInfoHeaders) {
response
.headers
.addAll(
service.getHeaders()
)
val serverInfo = service.getHeaders()
serverInfo.map {
response
.headers
.add(it.first, it.second)
}
}
return body

View File

@ -6,6 +6,6 @@ import org.springframework.context.annotation.Configuration
@Suppress("SpringFacetCodeInspection")
@Configuration
@ComponentScan("ru.touchin.server.info.advices")
@ComponentScan("ru.touchin.server.info.advices", "ru.touchin.server.info.controllers")
@ConfigurationPropertiesScan("ru.touchin.server.info")
class ServerInfo

View File

@ -0,0 +1,34 @@
package ru.touchin.server.info.controllers
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import ru.touchin.server.info.response.ServerInfoResponse
import ru.touchin.server.info.services.ServerInfoHeader
@RestController
@RequestMapping("/info")
class ServerInfoController(
private val serverInfoHeaders: List<ServerInfoHeader>
) {
@GetMapping
fun getServerInfo(): ServerInfoResponse {
val serverInfoList = mutableListOf<Map<String, String>>()
for (service in serverInfoHeaders) {
val headers = service.getHeaders()
headers.map {
serverInfoList.add(
mapOf(it)
)
}
}
return ServerInfoResponse(
serverInfo = serverInfoList
)
}
}

View File

@ -0,0 +1,7 @@
package ru.touchin.server.info.response
import org.springframework.util.MultiValueMap
data class ServerInfoResponse(
val serverInfo: List<Map<String, String>>
)

View File

@ -4,6 +4,6 @@ import org.springframework.util.MultiValueMap
interface ServerInfoHeader {
fun getHeaders(): MultiValueMap<String, String>
fun getHeaders(): List<Pair<String, String>>
}

View File

@ -11,11 +11,10 @@ class BuildVersionHeader(
private val serverInfoProperties: ServerInfoProperties
) : ServerInfoHeader {
override fun getHeaders(): MultiValueMap<String, String> {
return LinkedMultiValueMap<String, String>()
.apply {
this.add("X-App-Build-Version", serverInfoProperties.buildVersion)
}
override fun getHeaders(): List<Pair<String, String>> {
return listOf(
"X-App-Build-Version" to serverInfoProperties.buildVersion
)
}
}

View File

@ -0,0 +1,41 @@
package ru.touchin.server.info.controllers
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
import org.springframework.test.web.servlet.result.MockMvcResultHandlers
import org.springframework.test.web.servlet.result.MockMvcResultMatchers
@ActiveProfiles("test")
@SpringBootTest
@AutoConfigureMockMvc
class ServerInfoControllerMvcTest {
@Autowired
private lateinit var mockMvc: MockMvc
@Test
fun shouldBeWrappedResponse() {
mockMvc
.perform(MockMvcRequestBuilders.get("/info"))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk)
.andExpect(MockMvcResultMatchers.content().json(
"""
{
"serverInfo": [
{
"X-App-Build-Version": "1"
}
]
}
""".trimIndent()
))
}
}