48 private static final Set<String> ALL_METHODS = Set.of(
"GET",
"POST",
"PUT",
"DELETE",
"PATCH");
52 private static final Map<String, String[]> GREETINGS = Map.of(
53 "en",
new String[] {
"Hello",
"Hello, %s!" },
54 "zh",
new String[] {
"你好",
"%s,你好!" },
55 "hi",
new String[] {
"नमस्ते",
"नमस्ते, %s!" },
56 "es",
new String[] {
"Hola",
"¡Hola, %s!" },
57 "fr",
new String[] {
"Bonjour",
"Bonjour, %s!" },
58 "ar",
new String[] {
"مرحبا",
"مرحبا، %s!" },
59 "bn",
new String[] {
"হ্যালো",
"হ্যালো, %s!" },
60 "ru",
new String[] {
"Привет",
"Привет, %s!" },
61 "pt",
new String[] {
"Olá",
"Olá, %s!" },
62 "ur",
new String[] {
"سلام",
"سلام، %s!" }
65 private static final String DEFAULT_LANG =
"en";
78 return List.of(Route.of(
"/", ALL_METHODS));
88 return respond(x, 200);
93 return respond(x, 201);
98 return respond(x, 200);
103 return respond(x, 200);
108 return respond(x, 200);
111 private static boolean respond(
final HttpExchange x,
final int status) {
112 final var jx = asJetty(x);
114 final var lang = resolve(x.
queryFirst(
"lang"), DEFAULT_LANG);
116 final var greeting = buildGreeting(lang, name);
118 final var body =
new LinkedHashMap<String, Object>();
119 body.put(
"message", greeting);
120 body.put(
"lang", lang);
121 body.put(
"service",
"ether");
122 body.put(
"method", x.
method());
123 body.put(
"path", x.
path());
124 body.put(
"timestamp", Instant.now().toString());
126 RESPONSES.
json(jx.response(), jx.callback(), status, body);
130 private static String buildGreeting(
final String lang,
final String name) {
131 final var phrases = GREETINGS.getOrDefault(lang, GREETINGS.get(DEFAULT_LANG));
132 if (name !=
null && !name.isBlank()) {
133 return String.format(phrases[1], name.trim());
138 private static String resolve(
final String value,
final String fallback) {
139 if (value ==
null || value.isBlank()) {
142 final var normalized = value.trim().toLowerCase();
143 return GREETINGS.containsKey(normalized) ? normalized : fallback;
146 private static JettyHttpExchange asJetty(
final HttpExchange x) {
147 return (JettyHttpExchange) x;