update framework
This commit is contained in:
parent
5f02e31507
commit
ed050b17fe
26 changed files with 323 additions and 615 deletions
Binary file not shown.
|
@ -9,47 +9,9 @@ import java.util.Map.Entry;
|
|||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.bonus.extract.RouteExtracter;
|
||||
import dev.peerat.backend.model.Completion;
|
||||
import dev.peerat.backend.model.Group;
|
||||
import dev.peerat.backend.model.PeerAtUser;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.backend.routes.BadgeDetails;
|
||||
import dev.peerat.backend.routes.ChapterElement;
|
||||
import dev.peerat.backend.routes.ChapterList;
|
||||
import dev.peerat.backend.routes.DynamicLeaderboard;
|
||||
import dev.peerat.backend.routes.Leaderboard;
|
||||
import dev.peerat.backend.routes.PlayerDetails;
|
||||
import dev.peerat.backend.routes.PuzzleElement;
|
||||
import dev.peerat.backend.routes.PuzzleResponse;
|
||||
import dev.peerat.backend.routes.Result;
|
||||
import dev.peerat.backend.routes.Swagger;
|
||||
import dev.peerat.backend.routes.admins.DynamicLogs;
|
||||
import dev.peerat.backend.routes.admins.ExceptionLogs;
|
||||
import dev.peerat.backend.routes.admins.WebHookLeaderboard;
|
||||
import dev.peerat.backend.routes.admins.chapter.AddChapter;
|
||||
import dev.peerat.backend.routes.admins.chapter.DeleteChapter;
|
||||
import dev.peerat.backend.routes.admins.chapter.EditChapter;
|
||||
import dev.peerat.backend.routes.admins.chapter.GetChapter;
|
||||
import dev.peerat.backend.routes.admins.puzzle.AddPuzzle;
|
||||
import dev.peerat.backend.routes.admins.puzzle.DeletePuzzle;
|
||||
import dev.peerat.backend.routes.admins.puzzle.EditPuzzle;
|
||||
import dev.peerat.backend.routes.admins.puzzle.GetPuzzle;
|
||||
import dev.peerat.backend.routes.admins.puzzle.GetPuzzles;
|
||||
import dev.peerat.backend.routes.admins.tag.AddTag;
|
||||
import dev.peerat.backend.routes.admins.tag.DeleteTag;
|
||||
import dev.peerat.backend.routes.admins.tag.EditTag;
|
||||
import dev.peerat.backend.routes.admins.tag.GetTags;
|
||||
import dev.peerat.backend.routes.groups.GroupCreate;
|
||||
import dev.peerat.backend.routes.groups.GroupJoin;
|
||||
import dev.peerat.backend.routes.groups.GroupList;
|
||||
import dev.peerat.backend.routes.groups.GroupQuit;
|
||||
import dev.peerat.backend.routes.users.ChangePassword;
|
||||
import dev.peerat.backend.routes.users.ForgotPassword;
|
||||
import dev.peerat.backend.routes.users.Login;
|
||||
import dev.peerat.backend.routes.users.MailConfirmation;
|
||||
import dev.peerat.backend.routes.users.ProfileSettings;
|
||||
import dev.peerat.backend.routes.users.Register;
|
||||
import dev.peerat.backend.utils.Mail;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.DependencyInjector;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
|
@ -61,6 +23,8 @@ import dev.peerat.framework.Response;
|
|||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.RouteInterceptor;
|
||||
import dev.peerat.framework.Router;
|
||||
import dev.peerat.framework.auth.Authenticator;
|
||||
import dev.peerat.framework.auth.JwtAuthenticator;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
import dev.peerat.framework.utils.json.JsonParser;
|
||||
|
||||
|
@ -86,12 +50,13 @@ public class Main{
|
|||
"Access-Control-Allow-Headers: *");
|
||||
ACCESS_ROUTER = router;
|
||||
|
||||
Authenticator<PeerAtUser> auth;
|
||||
if(config.getJwtKey() != null){
|
||||
JsonParser parser = new JsonParser();
|
||||
JsonMap json = parser.parse(config.getJwtKey());
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
for(Entry<String, Object> entry : json.entries()) params.put(entry.getKey(), entry.getValue());
|
||||
router.configureJwt(
|
||||
auth = new JwtAuthenticator<PeerAtUser>().configure(
|
||||
(builder) -> builder.setExpectedIssuer(config.getTokenIssuer()),
|
||||
(claims) -> {
|
||||
claims.setIssuer(config.getTokenIssuer());
|
||||
|
@ -100,7 +65,7 @@ public class Main{
|
|||
(claims) -> new PeerAtUser(claims),
|
||||
params);
|
||||
}else{
|
||||
router.configureJwt(
|
||||
auth = new JwtAuthenticator<PeerAtUser>().configure(
|
||||
(builder) -> builder.setExpectedIssuer(config.getTokenIssuer()),
|
||||
(claims) -> {
|
||||
claims.setIssuer(config.getTokenIssuer());
|
||||
|
@ -108,12 +73,13 @@ public class Main{
|
|||
},
|
||||
(claims) -> new PeerAtUser(claims));
|
||||
JsonMap json = new JsonMap();
|
||||
for(Entry<String, Object> entry : router.exportJwtKey().entrySet()){
|
||||
for(Entry<String, Object> entry : ((JwtAuthenticator<PeerAtUser>)auth).exportKey().entrySet()){
|
||||
json.set(entry.getKey(), entry.getValue());
|
||||
}
|
||||
config.setJwtKey(json.toString());
|
||||
config.save();
|
||||
}
|
||||
router.setAuthenticator(auth);
|
||||
|
||||
router.setDefault((matcher, context, reader, writer) -> {
|
||||
context.response(404);
|
||||
|
@ -179,17 +145,10 @@ public class Main{
|
|||
|
||||
private static void initRoutes(Router<PeerAtUser> router, DatabaseRepository repo, Configuration config) throws Exception{
|
||||
router.registerPackages(new DependencyInjector()
|
||||
.of(repo, router, config.getMail(), new RouteExtracter(router))
|
||||
.of(repo, router, config, new RouteExtracter(router))
|
||||
.of("waitting", new HashMap<>())
|
||||
.of("leaderboard", new Locker<>())
|
||||
.of("log", router.getLogger())
|
||||
.of("exception", router.getExceptionLogger())
|
||||
.of("groups", new Locker<>())
|
||||
.of("groupDelay", config.getGroupJoinMinutes())
|
||||
.of("waitTime", config.getGroupQuitMinutes())
|
||||
.of("usersFiles", config.getUsersFiles())
|
||||
.of("gitToken", config.getGitToken())
|
||||
.of("issuer", config.getTokenIssuer()));
|
||||
.of("groups", new Locker<>()));
|
||||
|
||||
// Bot bot = new Bot(config, repo, groupLock);
|
||||
// bot.start();
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.Configuration;
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.model.Completion;
|
||||
|
@ -34,9 +35,9 @@ public class PuzzleResponse implements Response {
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public PuzzleResponse(DatabaseRepository databaseRepo, @Injection("usersFiles") String initUsersFilesPath, @Injection("leaderboard") Locker<Completion> locker){
|
||||
public PuzzleResponse(DatabaseRepository databaseRepo, Configuration config, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.databaseRepo = databaseRepo;
|
||||
usersFilesPath = initUsersFilesPath;
|
||||
usersFilesPath = config.getUsersFiles();
|
||||
this.leaderboard = locker;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.peerat.backend.routes;
|
|||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.Configuration;
|
||||
import dev.peerat.backend.bonus.extract.RouteExtracter;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
|
@ -14,9 +15,9 @@ public class Swagger implements Response{
|
|||
|
||||
private String json;
|
||||
|
||||
public Swagger(RouteExtracter extracter, @Injection("issuer") String host){
|
||||
public Swagger(RouteExtracter extracter, Configuration config){
|
||||
try{
|
||||
this.json = extracter.swagger(host).toString();
|
||||
this.json = extracter.swagger(config.getTokenIssuer()).toString();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
json = "{}";
|
||||
|
|
69
src/dev/peerat/backend/routes/admins/ChapterController.java
Normal file
69
src/dev/peerat/backend/routes/admins/ChapterController.java
Normal file
|
@ -0,0 +1,69 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class ChapterController{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public ChapterController(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/$", type = POST, needLogin = true)
|
||||
public void add(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Chapter chapter = new Chapter(-1, json.get("name"), Timestamp.valueOf(json.<String>get("start")), Timestamp.valueOf(json.<String>get("end")));
|
||||
if(repo.adminAddChapter(chapter)){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void delte(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeleteChapter(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void edit(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Chapter chapter = new Chapter(-1, json.get("name"), Timestamp.valueOf(json.<String>get("start")), Timestamp.valueOf(json.<String>get("end")));
|
||||
if(repo.adminUpdateChapter(Integer.parseInt(matcher.group(1)), chapter)){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", needLogin = true)
|
||||
public void get(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Chapter chapter = this.repo.getAdminChapter(Integer.parseInt(matcher.group(1)));
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("name", chapter.getName());
|
||||
json.set("start", chapter.getStartDate());
|
||||
json.set("end", chapter.getEndDate());
|
||||
|
||||
context.response(200);
|
||||
writer.write(json.toString()+"\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.Group;
|
||||
import dev.peerat.backend.model.PeerAtUser;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class DynamicLogs implements Response{
|
||||
|
||||
private Locker<Context> locker; //Context
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DynamicLogs(@Injection("log") Locker<Context> locker, DatabaseRepository repo){
|
||||
this.locker = locker;
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@RouteDoc(path = "/admin/logs", responseCode = 200, responseDescription = "L'utilisateur peux voir les logs en directe")
|
||||
@RouteDoc(responseCode = 401, responseDescription = "L'utilisateur n'a pas accès à cette ressource")
|
||||
|
||||
@Route(path = "^/admin/logs$", needLogin = true, websocket = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Key key = new Key();
|
||||
|
||||
locker.init(key);
|
||||
try {
|
||||
while(!reader.isClosed()){
|
||||
locker.lock(key);
|
||||
Context instance = locker.getValue(key);
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("logged", instance.isLogged());
|
||||
if(instance.isLogged()) json.set("pseudo", repo.getPlayer(instance.<PeerAtUser>getUser().getId()).getPseudo());
|
||||
json.set("path", instance.getPath());
|
||||
json.set("type", instance.getType().toString());
|
||||
json.set("code", instance.getResponseCode());
|
||||
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
}catch(Exception e){}
|
||||
locker.remove(key);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class ExceptionLogs implements Response{
|
||||
|
||||
private Locker<Exception> locker;
|
||||
|
||||
public ExceptionLogs(@Injection("exception") Locker<Exception> locker){
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/exceptions$", needLogin = true, websocket = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Key key = new Key();
|
||||
|
||||
locker.init(key);
|
||||
try {
|
||||
while(!reader.isClosed()){
|
||||
locker.lock(key);
|
||||
Exception exception = locker.getValue(key);
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("type", exception.getClass().getSimpleName());
|
||||
json.set("message", exception.getMessage());
|
||||
JsonArray trace = new JsonArray();
|
||||
for(StackTraceElement element : exception.getStackTrace()) trace.add(element.toString());
|
||||
json.set("trace", trace);
|
||||
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
}catch(Exception e){}
|
||||
locker.remove(key);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
74
src/dev/peerat/backend/routes/admins/LogController.java
Normal file
74
src/dev/peerat/backend/routes/admins/LogController.java
Normal file
|
@ -0,0 +1,74 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.PeerAtUser;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.Router;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class LogController {
|
||||
|
||||
private Locker<Context> contextLocker;
|
||||
private Locker<Throwable> exceptionLocker;
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public LogController(Router<PeerAtUser> router, DatabaseRepository repo){
|
||||
this.contextLocker = router.getLogger();
|
||||
this.exceptionLocker = router.getExceptionLogger();
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@RouteDoc(path = "/admin/logs", responseCode = 200, responseDescription = "L'utilisateur peux voir les logs en directe")
|
||||
@RouteDoc(responseCode = 401, responseDescription = "L'utilisateur n'a pas accès à cette ressource")
|
||||
|
||||
@Route(path = "^/admin/logs$", needLogin = true, websocket = true)
|
||||
public void logs(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
log(reader, writer, this.contextLocker, (json, instance) -> {
|
||||
json.set("logged", instance.isLogged());
|
||||
if(instance.isLogged()) json.set("pseudo", repo.getPlayer(instance.<PeerAtUser>getUser().getId()).getPseudo());
|
||||
json.set("path", instance.getPath());
|
||||
json.set("type", instance.getType().toString());
|
||||
json.set("code", instance.getResponseCode());
|
||||
});
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/exceptions$", needLogin = true, websocket = true)
|
||||
public void exceptions(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
log(reader, writer, this.exceptionLocker, (json, exception) -> {
|
||||
json.set("type", exception.getClass().getSimpleName());
|
||||
json.set("message", exception.getMessage());
|
||||
JsonArray trace = new JsonArray();
|
||||
for(StackTraceElement element : exception.getStackTrace()) trace.add(element.toString());
|
||||
json.set("trace", trace);
|
||||
});
|
||||
}
|
||||
|
||||
public <T> void log(HttpReader reader, HttpWriter writer, Locker<T> locker, BiConsumer<JsonMap, T> consumer){
|
||||
Key key = new Key();
|
||||
|
||||
locker.init(key);
|
||||
try {
|
||||
while(!reader.isClosed()){
|
||||
locker.lock(key);
|
||||
T instance = locker.getValue(key);
|
||||
JsonMap json = new JsonMap();
|
||||
consumer.accept(json, instance);
|
||||
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
}catch(Exception e){}
|
||||
locker.remove(key);
|
||||
}
|
||||
|
||||
}
|
88
src/dev/peerat/backend/routes/admins/PuzzleController.java
Normal file
88
src/dev/peerat/backend/routes/admins/PuzzleController.java
Normal file
|
@ -0,0 +1,88 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class PuzzleController {
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public PuzzleController(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/$", type = POST, needLogin = true)
|
||||
public void add(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Puzzle puzzle = new Puzzle(-1, json.get("name"), json.get("content"), json.<String>get("soluce").getBytes(), null, json.<Long>get("scoreMax").intValue(), null, -1, null);
|
||||
if(repo.adminAddPuzzle(puzzle, json.<Long>get("chapter").intValue())){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void delete(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeletePuzzle(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void edit(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Puzzle puzzle = new Puzzle(-1, json.get("name"), json.get("content"), json.<String>get("soluce").getBytes(), null, json.<Long>get("scoreMax").intValue(), null, -1, null);
|
||||
if(repo.adminUpdatePuzzle(Integer.parseInt(matcher.group(1)), puzzle, json.<Long>get("chapter").intValue())){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", needLogin = true)
|
||||
public void get(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Puzzle puzzle = this.repo.getAdminPuzzle(Integer.parseInt(matcher.group(1)));
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("name", puzzle.getName());
|
||||
json.set("content", puzzle.getContent());
|
||||
json.set("soluce", new String(puzzle.getSoluce()));
|
||||
json.set("score_max", puzzle.getScoreMax());
|
||||
|
||||
context.response(200);
|
||||
writer.write(json.toString()+"\n");
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzles/$", needLogin = true)
|
||||
public void getAll(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
List<Puzzle> puzzles = repo.getAdminPuzzles();
|
||||
JsonArray array = new JsonArray();
|
||||
for (Puzzle puzzle : puzzles){
|
||||
JsonMap puzzleJSON = new JsonMap();
|
||||
puzzleJSON.set("id", puzzle.getId());
|
||||
puzzleJSON.set("name", puzzle.getName());
|
||||
puzzleJSON.set("scoreMax", puzzle.getScoreMax());
|
||||
if(puzzle.getTags() != null) puzzleJSON.set("tags", puzzle.getJsonTags());
|
||||
puzzleJSON.set("show", puzzle.hasStarted());
|
||||
array.add(puzzleJSON);
|
||||
}
|
||||
context.response(200);
|
||||
writer.write(array.toString());
|
||||
}
|
||||
}
|
67
src/dev/peerat/backend/routes/admins/TagController.java
Normal file
67
src/dev/peerat/backend/routes/admins/TagController.java
Normal file
|
@ -0,0 +1,67 @@
|
|||
package dev.peerat.backend.routes.admins;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Tag;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class TagController {
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public TagController(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", type = POST, needLogin = true)
|
||||
public void add(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminAddTag(json.get("name"))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void delete(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeleteTag(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void edit(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminUpdateTag(new Tag(Integer.parseInt(matcher.group(1)), json.get("name")))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", needLogin = true)
|
||||
public void get(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
List<Tag> list = repo.getAdminTags();
|
||||
JsonArray json = new JsonArray();
|
||||
for(Tag tag : list) json.add(tag.toJson());
|
||||
context.response(200);
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.chapter;
|
||||
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class AddChapter implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public AddChapter(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/$", type = POST, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Chapter chapter = new Chapter(-1, json.get("name"), Timestamp.valueOf(json.<String>get("start")), Timestamp.valueOf(json.<String>get("end")));
|
||||
if(repo.adminAddChapter(chapter)){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.chapter;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
||||
public class DeleteChapter implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DeleteChapter(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeleteChapter(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.chapter;
|
||||
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class EditChapter implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public EditChapter(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Chapter chapter = new Chapter(-1, json.get("name"), Timestamp.valueOf(json.<String>get("start")), Timestamp.valueOf(json.<String>get("end")));
|
||||
if(repo.adminUpdateChapter(Integer.parseInt(matcher.group(1)), chapter)){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.chapter;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class GetChapter implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetChapter(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/chapter/(\\d+)$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Chapter chapter = this.repo.getAdminChapter(Integer.parseInt(matcher.group(1)));
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("name", chapter.getName());
|
||||
json.set("start", chapter.getStartDate());
|
||||
json.set("end", chapter.getEndDate());
|
||||
|
||||
context.response(200);
|
||||
writer.write(json.toString()+"\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class AddPuzzle implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public AddPuzzle(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/$", type = POST, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Puzzle puzzle = new Puzzle(-1, json.get("name"), json.get("content"), json.<String>get("soluce").getBytes(), null, json.<Long>get("scoreMax").intValue(), null, -1, null);
|
||||
if(repo.adminAddPuzzle(puzzle, json.<Long>get("chapter").intValue())){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class DeletePuzzle implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DeletePuzzle(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeletePuzzle(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class EditPuzzle implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public EditPuzzle(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
Puzzle puzzle = new Puzzle(-1, json.get("name"), json.get("content"), json.<String>get("soluce").getBytes(), null, json.<Long>get("scoreMax").intValue(), null, -1, null);
|
||||
if(repo.adminUpdatePuzzle(Integer.parseInt(matcher.group(1)), puzzle, json.<Long>get("chapter").intValue())){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class GetPuzzle implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetPuzzle(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzle/(\\d+)$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
Puzzle puzzle = this.repo.getAdminPuzzle(Integer.parseInt(matcher.group(1)));
|
||||
JsonMap json = new JsonMap();
|
||||
json.set("name", puzzle.getName());
|
||||
json.set("content", puzzle.getContent());
|
||||
json.set("soluce", new String(puzzle.getSoluce()));
|
||||
json.set("score_max", puzzle.getScoreMax());
|
||||
|
||||
context.response(200);
|
||||
writer.write(json.toString()+"\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class GetPuzzles implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetPuzzles(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzles/$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
List<Puzzle> puzzles = repo.getAdminPuzzles();
|
||||
JsonArray array = new JsonArray();
|
||||
for (Puzzle puzzle : puzzles){
|
||||
JsonMap puzzleJSON = new JsonMap();
|
||||
puzzleJSON.set("id", puzzle.getId());
|
||||
puzzleJSON.set("name", puzzle.getName());
|
||||
puzzleJSON.set("scoreMax", puzzle.getScoreMax());
|
||||
if(puzzle.getTags() != null) puzzleJSON.set("tags", puzzle.getJsonTags());
|
||||
puzzleJSON.set("show", puzzle.hasStarted());
|
||||
array.add(puzzleJSON);
|
||||
}
|
||||
context.response(200);
|
||||
writer.write(array.toString());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import static dev.peerat.framework.RequestType.POST;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class AddTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public AddTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", type = POST, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminAddTag(json.get("name"))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import static dev.peerat.framework.RequestType.DELETE;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
||||
public class DeleteTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DeleteTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeleteTag(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Tag;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class EditTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public EditTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminUpdateTag(new Tag(Integer.parseInt(matcher.group(1)), json.get("name")))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Tag;
|
||||
import dev.peerat.backend.repository.DatabaseRepository;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonArray;
|
||||
|
||||
public class GetTags implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetTags(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
List<Tag> list = repo.getAdminTags();
|
||||
JsonArray json = new JsonArray();
|
||||
for(Tag tag : list) json.add(tag.toJson());
|
||||
context.response(200);
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
}
|
|
@ -5,6 +5,7 @@ import static dev.peerat.framework.RequestType.POST;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.Configuration;
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.model.Group;
|
||||
|
@ -16,7 +17,6 @@ import dev.peerat.framework.HttpReader;
|
|||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
|
@ -26,10 +26,10 @@ public class GroupCreate extends FormResponse {
|
|||
private DatabaseRepository repo;
|
||||
private int groupDelay;
|
||||
|
||||
public GroupCreate(DatabaseRepository repo, @Injection("groups") Locker<Group> locker, @Injection("groupDelay") int groupDelay){
|
||||
public GroupCreate(DatabaseRepository repo, @Injection("groups") Locker<Group> locker, Configuration config){
|
||||
this.repo = repo;
|
||||
this.locker = locker;
|
||||
this.groupDelay = groupDelay;
|
||||
this.groupDelay = config.getGroupJoinMinutes();
|
||||
|
||||
validator("name", "[a-zA-Z0-9&|!?{}\\[\\]%/*\\-+=:;,_#@ ]{3,100}");
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import static dev.peerat.framework.RequestType.POST;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.Configuration;
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.model.Completion;
|
||||
|
@ -27,10 +28,10 @@ public class GroupJoin implements Response{
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public GroupJoin(DatabaseRepository repo, @Injection("groupDelay") int groupDelay, @Injection("waitTime") String waitTime, @Injection("leaderboard") Locker<Completion> locker){
|
||||
public GroupJoin(DatabaseRepository repo, Configuration config, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.repo = repo;
|
||||
this.groupDelay = groupDelay;
|
||||
this.waitTime = waitTime;
|
||||
this.groupDelay = config.getGroupJoinMinutes();
|
||||
this.waitTime = config.getGroupQuitMinutes();
|
||||
this.leaderboard = locker;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import static dev.peerat.framework.RequestType.POST;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.Configuration;
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
import dev.peerat.backend.model.Chapter;
|
||||
import dev.peerat.backend.model.Completion;
|
||||
|
@ -26,9 +27,9 @@ public class GroupQuit implements Response{
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public GroupQuit(DatabaseRepository repo, @Injection("groupDelay") int groupDelay, @Injection("leaderboard") Locker<Completion> locker){
|
||||
public GroupQuit(DatabaseRepository repo, Configuration config, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.repo = repo;
|
||||
this.groupDelay = groupDelay;
|
||||
this.groupDelay = config.getGroupJoinMinutes();
|
||||
|
||||
this.leaderboard = locker;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue