1 package io.getunleash.strategy;
2
3 import java.net.InetAddress;
4 import java.net.UnknownHostException;
5 import java.util.Arrays;
6 import java.util.Map;
7 import java.util.Optional;
8
9 public class ApplicationHostnameStrategy implements Strategy {
10     public static final String HOST_NAMES_PARAM = "hostNames";
11     protected final String NAME = "applicationHostname";
12     private final String hostname;
13
14     public ApplicationHostnameStrategy() {
15         this.hostname = resolveHostname();
16     }
17
18     private String resolveHostname() {
19         String hostname = System.getProperty("hostname");
20         if (hostname == null) {
21             try {
22                 hostname = InetAddress.getLocalHost().getHostName();
23             } catch (UnknownHostException e) {
24                 hostname = "undefined";
25             }
26         }
27         return hostname;
28     }
29
30     @Override
31     public String getName() {
32         return NAME;
33     }
34
35     @Override
36     public boolean isEnabled(Map<String, String> parameters) {
37         return Optional.ofNullable(parameters.get(HOST_NAMES_PARAM))
38                 .map(hostString -> hostString.toLowerCase())
39                 .map(hostString -> Arrays.asList(hostString.split(",\\s*")))
40                 .map(hostList -> hostList.contains(hostname.toLowerCase()))
41                 .orElse(false);
42     }
43 }
44