1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package net.anyflow.lannister.httphandler.api;
18
19 import java.util.stream.Collectors;
20
21 import com.fasterxml.jackson.core.JsonProcessingException;
22 import com.fasterxml.jackson.databind.ObjectMapper;
23 import com.google.common.base.Strings;
24
25 import io.netty.handler.codec.http.HttpResponseStatus;
26 import net.anyflow.lannister.http.HttpRequestHandler;
27 import net.anyflow.lannister.topic.TopicSubscriber;
28
29 @HttpRequestHandler.Handles(paths = { "api/topicSubscribers" }, httpMethods = { "GET" })
30 public class TopicSubscribers extends HttpRequestHandler {
31 private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TopicSubscribers.class);
32
33 @Override
34 public String service() {
35 String filter = Strings.nullToEmpty(httpRequest().parameter("filter"));
36
37 switch (filter) {
38 case "":
39 case "all":
40 return all();
41
42 default:
43 return null;
44 }
45 }
46
47 private String all() {
48 try {
49 return new ObjectMapper().writeValueAsString(TopicSubscriber.NEXUS.keySet().stream()
50 .map(key -> TopicSubscriber.NEXUS.get(key)).collect(Collectors.toList()));
51 }
52 catch (JsonProcessingException e) {
53 logger.error(e.getMessage(), e);
54
55 this.httpResponse().setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
56 return null;
57 }
58 }
59 }