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