Implemented an interceptor, that forbiddes access according to a header
[demos/spring-boot] / src / main / java / de / juplo / demo / DemoRestController.java
1 package de.juplo.demo;
2
3 import lombok.RequiredArgsConstructor;
4 import lombok.extern.slf4j.Slf4j;
5 import org.springframework.web.bind.annotation.*;
6
7
8 @RequiredArgsConstructor
9 @RestController
10 @Slf4j
11 public class DemoRestController
12 {
13   public final String PLACEHOLDER_TO = "TO_NAME";
14   public final String PLACEHOLDER_FROM = "FROM_NAME";
15
16
17   private final String from;
18
19
20   @RequestableByHumans
21   @PostMapping("/greet/{to}")
22   public MessageTo greet(
23       @PathVariable String to,
24       @RequestBody String greeting)
25   {
26     String message = greeting
27         .replaceAll(PLACEHOLDER_FROM, from)
28         .replaceAll(PLACEHOLDER_TO, to)
29         .trim();
30
31     log.info("Greeting from {} to {}: {}", from, to, message);
32
33     return MessageTo.of(message, from, to);
34   }
35
36   @PostMapping("/acknowledge/{to}")
37   public MessageTo acknowledge(
38       @PathVariable String to,
39       @RequestBody String acknowledgment)
40   {
41     String message = acknowledgment
42         .replaceAll(PLACEHOLDER_FROM, from)
43         .replaceAll(PLACEHOLDER_TO, to)
44         .trim();
45
46     log.info("Acknowledgement from {} to {}: {}", from, to, message);
47
48     return MessageTo.of(message, from, to);
49   }
50 }