1 package diffblue.age.web;
2
3 import diffblue.legalage.LegalAgePredicate;
4
5 import org.restlet.data.Status;
6 import org.restlet.resource.Get;
7 import org.restlet.resource.ServerResource;
8 import org.json.JSONObject;
9 import java.time.LocalDate;
10 import java.time.format.DateTimeFormatter;
11 import java.time.format.DateTimeParseException;
12
13 public class AgeResource extends ServerResource {
14
15 @Get("txt")
16 public String legalAgeValidator() {
17 var legalAgePredicate = new LegalAgePredicate();
18 var birthdayString = getQueryValue("birthday");
19 var response = new JSONObject();
20
21 final LocalDate birthday;
22 try {
23 birthday = LocalDate.parse(birthdayString, DateTimeFormatter.ISO_DATE);
24 } catch (DateTimeParseException e) {
25 response.put("error", "Invalid birthday format. Use yyyy-mm-dd.");
26 setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
27 return response.toString();
28 }
29
30 var isLegalAge = legalAgePredicate.test(birthday);
31 var message = isLegalAge ? "You are of legal age." : "You are under legal age.";
32 response.put("message", "Happy Birthday! " + message);
33 response.put("birthday", birthday.toString());
34 response.put("isLegalAge", isLegalAge);
35 return response.toString();
36 }
37 }