View Javadoc
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  }