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 }