1+ package com.softeno.template.sample.http.api
2+
3+ import org.apache.commons.logging.LogFactory
4+ import org.springframework.context.annotation.Bean
5+ import org.springframework.context.annotation.Configuration
6+ import org.springframework.stereotype.Service
7+ import org.springframework.web.reactive.function.server.RequestPredicates.*
8+ import org.springframework.web.reactive.function.server.RouterFunction
9+ import org.springframework.web.reactive.function.server.RouterFunctions.route
10+ import org.springframework.web.reactive.function.server.ServerResponse
11+ import org.springframework.web.reactive.function.server.ServerResponse.ok
12+ import org.springframework.web.reactive.function.server.body
13+ import reactor.core.publisher.Mono
14+
15+ @Configuration
16+ class SampleRouter {
17+ // OAuth2 secured sample resource
18+ @Bean
19+ fun routes (service : SampleService ): RouterFunction <ServerResponse > {
20+ return route(GET (" /sample-secured/{id}" )) { req ->
21+ ok().body(service.getHandler(req.pathVariable(" id" )))
22+ }.andRoute(POST (" /sample-secured" )) { req ->
23+ req.bodyToMono(SampleResponseDto ::class .java).map {
24+ service.postHandler(it)
25+ }.flatMap { ok().body(it) }
26+ }.andRoute(PUT (" /sample-secured/{id}" )) { req ->
27+ req.bodyToMono(SampleResponseDto ::class .java).map {
28+ service.putHandler(req.pathVariable(" id" ), it)
29+ }.flatMap { ok().bodyValue(it) }
30+ }.andRoute(DELETE (" /sample-secured/{id}" )) { req ->
31+ ok().body(service.deleteHandler(req.pathVariable(" id" )))
32+ }
33+ }
34+ }
35+
36+ @Service
37+ class SampleService {
38+ private val log = LogFactory .getLog(javaClass)
39+
40+ fun postHandler (request : SampleResponseDto ): Mono <SampleResponseDto > {
41+ log.info(" [sample-service]: POST request: $request " )
42+ return Mono .just(request)
43+ }
44+
45+ fun getHandler (id : String ): Mono <SampleResponseDto > {
46+ log.info(" [sample-service]: GET id: $id " )
47+ return Mono .just(SampleResponseDto (data = id))
48+ }
49+
50+ fun putHandler (id : String , request : SampleResponseDto ): Mono <SampleResponseDto > {
51+ log.info(" [sample-service]: PUT id: $id , request: $request " )
52+ return Mono .just(request)
53+ }
54+
55+ fun deleteHandler (id : String ): Mono <Void > {
56+ log.info(" [sample-service]: GET id: $id " )
57+ return Mono .empty()
58+ }
59+
60+ }
0 commit comments