Upgrade Route System
This commit is contained in:
parent
3863fb659b
commit
d4fcf57144
12 changed files with 56 additions and 107 deletions
|
@ -28,6 +28,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Router;
|
import be.jeffcheasey88.peeratcode.webserver.Router;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
|
@ -41,12 +42,6 @@ public class Main {
|
||||||
Router router = new Router(new DatabaseRepository(config), config.getTokenIssuer(), config.getTokenExpiration());
|
Router router = new Router(new DatabaseRepository(config), config.getTokenIssuer(), config.getTokenExpiration());
|
||||||
|
|
||||||
router.setDefault(new Response(){
|
router.setDefault(new Response(){
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern(){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 404, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 404, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -57,10 +52,7 @@ public class Main {
|
||||||
});
|
});
|
||||||
|
|
||||||
router.register(new Response(){
|
router.register(new Response(){
|
||||||
@Override
|
@Route(path = "^(.*)$", type = "OPTIONS")
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^(.*)$");
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200,
|
HttpUtil.responseHeaders(writer, 200,
|
||||||
|
@ -68,11 +60,6 @@ public class Main {
|
||||||
"Access-Control-Allow-Methods: *",
|
"Access-Control-Allow-Methods: *",
|
||||||
"Access-Control-Allow-Headers: *");
|
"Access-Control-Allow-Headers: *");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getType() {
|
|
||||||
return "OPTIONS";
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
initRoutes(router);
|
initRoutes(router);
|
||||||
|
|
|
@ -1,21 +1,18 @@
|
||||||
package be.jeffcheasey88.peeratcode.routes;
|
package be.jeffcheasey88.peeratcode.routes;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.model.Badge;
|
import be.jeffcheasey88.peeratcode.model.Badge;
|
||||||
import be.jeffcheasey88.peeratcode.model.Player;
|
|
||||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class BadgeDetails implements Response {
|
public class BadgeDetails implements Response {
|
||||||
|
|
||||||
|
@ -25,6 +22,7 @@ public class BadgeDetails implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/badge\\/([0-9]+)$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -44,8 +42,4 @@ public class BadgeDetails implements Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/badge\\/([0-9]+)$");
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -7,13 +7,13 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class ChapterElement implements Response {
|
public class ChapterElement implements Response {
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ public class ChapterElement implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/chapter\\/([0-9]+)$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -46,11 +47,6 @@ public class ChapterElement implements Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/chapter\\/([0-9]+)$");
|
|
||||||
}
|
|
||||||
|
|
||||||
private int extractId(Matcher matcher) {
|
private int extractId(Matcher matcher) {
|
||||||
return Integer.parseInt(matcher.group(1));
|
return Integer.parseInt(matcher.group(1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
package be.jeffcheasey88.peeratcode.routes;
|
package be.jeffcheasey88.peeratcode.routes;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.model.Chapter;
|
import be.jeffcheasey88.peeratcode.model.Chapter;
|
||||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class ChapterList implements Response {
|
public class ChapterList implements Response {
|
||||||
|
|
||||||
private final DatabaseRepository databaseRepo;
|
private final DatabaseRepository databaseRepo;
|
||||||
|
@ -23,6 +23,7 @@ public class ChapterList implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/chapters$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -39,8 +40,4 @@ public class ChapterList implements Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/chapters$");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
package be.jeffcheasey88.peeratcode.routes;
|
package be.jeffcheasey88.peeratcode.routes;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.SortedSet;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.model.Player;
|
import be.jeffcheasey88.peeratcode.model.Player;
|
||||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class Leaderboard implements Response {
|
public class Leaderboard implements Response {
|
||||||
|
|
||||||
private final DatabaseRepository databaseRepo;
|
private final DatabaseRepository databaseRepo;
|
||||||
|
@ -24,6 +24,7 @@ public class Leaderboard implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/leaderboard$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -43,9 +44,4 @@ public class Leaderboard implements Response {
|
||||||
}
|
}
|
||||||
writer.write(playersJSON.toJSONString().replace("\\", ""));
|
writer.write(playersJSON.toJSONString().replace("\\", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/leaderboard$");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,19 @@
|
||||||
package be.jeffcheasey88.peeratcode.routes;
|
package be.jeffcheasey88.peeratcode.routes;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.model.Player;
|
import be.jeffcheasey88.peeratcode.model.Player;
|
||||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class PlayerDetails implements Response {
|
public class PlayerDetails implements Response {
|
||||||
|
|
||||||
private final DatabaseRepository databaseRepo;
|
private final DatabaseRepository databaseRepo;
|
||||||
|
@ -25,6 +22,7 @@ public class PlayerDetails implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/player\\/?(.+)?$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
Player player;
|
Player player;
|
||||||
|
@ -53,8 +51,4 @@ public class PlayerDetails implements Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/player\\/?(.+)?$");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
public class PuzzleElement implements Response {
|
public class PuzzleElement implements Response {
|
||||||
|
@ -22,6 +23,7 @@ public class PuzzleElement implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/puzzle\\/([0-9]+)$")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.responseHeaders(writer, 200,
|
HttpUtil.responseHeaders(writer, 200,
|
||||||
|
@ -39,11 +41,6 @@ public class PuzzleElement implements Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/puzzle\\/([0-9]+)$");
|
|
||||||
}
|
|
||||||
|
|
||||||
private int extractId(Matcher matcher) {
|
private int extractId(Matcher matcher) {
|
||||||
return Integer.parseInt(matcher.group(1));
|
return Integer.parseInt(matcher.group(1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ import java.nio.file.Paths;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
@ -18,6 +17,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
public class PuzzleResponse implements Response {
|
public class PuzzleResponse implements Response {
|
||||||
|
@ -27,6 +27,7 @@ public class PuzzleResponse implements Response {
|
||||||
this.databaseRepo = databaseRepo;
|
this.databaseRepo = databaseRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/puzzleResponse\\/([0-9]+)$", type = "POST", needLogin = true)
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
ReceivedResponse received = new ReceivedResponse(matcher, reader);
|
ReceivedResponse received = new ReceivedResponse(matcher, reader);
|
||||||
|
@ -56,20 +57,6 @@ public class PuzzleResponse implements Response {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/puzzleResponse\\/([0-9]+)$");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getType() {
|
|
||||||
return "POST";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean needLogin(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ReceivedResponse {
|
class ReceivedResponse {
|
||||||
|
|
|
@ -14,6 +14,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Router;
|
import be.jeffcheasey88.peeratcode.webserver.Router;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ public class Register implements Response {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/register$", type = "POST")
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
if(user != null){
|
if(user != null){
|
||||||
|
@ -81,14 +83,4 @@ public class Register implements Response {
|
||||||
Files.createDirectories(Paths.get(String.format(Player.PATH_TO_CODE, pseudo)));
|
Files.createDirectories(Paths.get(String.format(Player.PATH_TO_CODE, pseudo)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern() {
|
|
||||||
return Pattern.compile("^\\/register$");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getType() {
|
|
||||||
return "POST";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
public class Result implements Response{
|
public class Result implements Response{
|
||||||
|
@ -17,7 +18,8 @@ public class Result implements Response{
|
||||||
public Result(DatabaseRepository repo){
|
public Result(DatabaseRepository repo){
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/result\\/(\\d+)$", needLogin = true)
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
int puzzle = Integer.parseInt(matcher.group(1));
|
int puzzle = Integer.parseInt(matcher.group(1));
|
||||||
|
@ -31,13 +33,4 @@ public class Result implements Response{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Pattern getPattern(){
|
|
||||||
return Pattern.compile("^\\/result\\/(\\d+)$");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean needLogin(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
16
src/be/jeffcheasey88/peeratcode/webserver/Route.java
Normal file
16
src/be/jeffcheasey88/peeratcode/webserver/Route.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package be.jeffcheasey88.peeratcode.webserver;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.METHOD)
|
||||||
|
public @interface Route {
|
||||||
|
|
||||||
|
String path() default "^.*$";
|
||||||
|
String type() default "GET";
|
||||||
|
boolean needLogin() default false;
|
||||||
|
|
||||||
|
}
|
|
@ -41,7 +41,7 @@ public class Router{
|
||||||
|
|
||||||
public void register(Response response){
|
public void register(Response response){
|
||||||
try {
|
try {
|
||||||
Method method = response.getClass().getDeclaredMethod("exec");
|
Method method = response.getClass().getDeclaredMethod("exec", Response.class.getDeclaredMethods()[0].getParameterTypes());
|
||||||
Route route = method.getAnnotation(Route.class);
|
Route route = method.getAnnotation(Route.class);
|
||||||
|
|
||||||
this.responses.put(response, route);
|
this.responses.put(response, route);
|
||||||
|
|
Loading…
Add table
Reference in a new issue