diff --git a/tomcat/src/main/java/org/apache/coyote/controller/RegisterController.java b/tomcat/src/main/java/org/apache/coyote/controller/RegisterController.java index f00da75f03..587882291e 100644 --- a/tomcat/src/main/java/org/apache/coyote/controller/RegisterController.java +++ b/tomcat/src/main/java/org/apache/coyote/controller/RegisterController.java @@ -4,6 +4,7 @@ import static org.apache.coyote.http11.HttpStatus.OK; import java.util.Map; +import java.util.Objects; import nextstep.jwp.db.InMemoryUserRepository; import nextstep.jwp.model.User; import org.apache.coyote.http11.HttpRequest; @@ -14,17 +15,30 @@ public class RegisterController extends AbstractController { private static final Logger log = LoggerFactory.getLogger(RegisterController.class); + public static final int LOGIN_QUERY_PARAMS = 3; @Override - protected void doPost(HttpRequest request, HttpResponse response) throws Exception { + protected void doPost(HttpRequest request, HttpResponse response) { Map queryParms = Utils.parseToQueryParms(request.getBody()); + + validateQueryParms(queryParms); User user = new User(queryParms.get("account"), queryParms.get("password"), queryParms.get("email")); + InMemoryUserRepository.save(user); response.setStatus(FOUND); response.setRedirectUrl("/index.html"); } + private void validateQueryParms(Map queryParms) { + long count = queryParms.entrySet().stream() + .filter(entry -> Objects.nonNull(entry.getValue())) + .count(); + if (count != LOGIN_QUERY_PARAMS) { + throw new IllegalArgumentException(); + } + } + @Override protected void doGet(HttpRequest request, HttpResponse response) throws Exception { response.setStatus(OK);