ah ?
This commit is contained in:
parent
eb5f62c19d
commit
7174a24ca8
5 changed files with 31 additions and 33 deletions
|
@ -34,10 +34,10 @@ public class BadgeDetails implements Response {
|
|||
JSONObject badgeJSON = new JSONObject();
|
||||
if (badge != null) {
|
||||
badgeJSON.put("name", badge.getName());
|
||||
if(badge.getLogo() != null) badgeJSON.put("logo", new String(Base64.getEncoder().encode(badge.getLogo())));
|
||||
if(badge.getLogo() != null) badgeJSON.put("logo", Base64.getEncoder().encodeToString(badge.getLogo()));
|
||||
badgeJSON.put("level", badge.getLevel());
|
||||
}
|
||||
writer.write(badgeJSON.toJSONString());
|
||||
writer.write(badgeJSON.toJSONString().replace("\\", ""));
|
||||
}
|
||||
else {
|
||||
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
|
||||
|
@ -48,4 +48,4 @@ public class BadgeDetails implements Response {
|
|||
public Pattern getPattern() {
|
||||
return Pattern.compile("^\\/badge\\/([0-9]+)$");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
|||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||
import be.jeffcheasey88.peeratcode.webserver.Route;
|
||||
import be.jeffcheasey88.peeratcode.webserver.Router;
|
||||
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||
|
||||
|
@ -27,6 +28,7 @@ public class Login implements Response {
|
|||
this.router = router;
|
||||
}
|
||||
|
||||
@Route(path = "^\\/login$", type = "POST")
|
||||
@Override
|
||||
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||
if(user != null){
|
||||
|
@ -49,14 +51,4 @@ public class Login implements Response {
|
|||
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pattern getPattern() {
|
||||
return Pattern.compile("^\\/login$");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(){
|
||||
return "POST";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,9 +8,12 @@ import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
|||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||
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;
|
||||
|
||||
|
@ -54,9 +57,4 @@ public class PlayerDetails implements Response {
|
|||
public Pattern getPattern() {
|
||||
return Pattern.compile("^\\/player\\/(.+)?$");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean needLogin(){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,9 +7,4 @@ public interface Response{
|
|||
|
||||
void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception ;
|
||||
|
||||
Pattern getPattern();
|
||||
|
||||
default String getType(){ return "GET"; }
|
||||
|
||||
default boolean needLogin() { return false; }
|
||||
}
|
|
@ -1,8 +1,11 @@
|
|||
package be.jeffcheasey88.peeratcode.webserver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.jose4j.jwk.RsaJsonWebKey;
|
||||
import org.jose4j.jwk.RsaJwkGenerator;
|
||||
|
@ -15,7 +18,8 @@ import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
|||
|
||||
public class Router{
|
||||
|
||||
private List<Response> responses;
|
||||
private Map<Response, Route> responses;
|
||||
private Map<Response, Pattern> patterns;
|
||||
private Response noFileFound;
|
||||
private RsaJsonWebKey rsaJsonWebKey;
|
||||
private DatabaseRepository repo;
|
||||
|
@ -26,7 +30,8 @@ public class Router{
|
|||
this.repo = repo;
|
||||
this.token_issuer = token_issuer;
|
||||
this.token_expiration = token_expiration;
|
||||
this.responses = new ArrayList<>();
|
||||
this.responses = new HashMap<>();
|
||||
this.patterns = new HashMap<>();
|
||||
this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
|
||||
}
|
||||
|
||||
|
@ -35,7 +40,15 @@ public class Router{
|
|||
}
|
||||
|
||||
public void register(Response response){
|
||||
this.responses.add(response);
|
||||
try {
|
||||
Method method = response.getClass().getDeclaredMethod("exec");
|
||||
Route route = method.getAnnotation(Route.class);
|
||||
|
||||
this.responses.put(response, route);
|
||||
this.patterns.put(response, Pattern.compile(route.path()));
|
||||
} catch (Exception e){
|
||||
throw new IllegalArgumentException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void setDefault(Response response){
|
||||
|
@ -43,12 +56,12 @@ public class Router{
|
|||
}
|
||||
|
||||
public void exec(String type, String path, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||
for(Response response : this.responses){
|
||||
if(type.equals(response.getType())){
|
||||
Matcher matcher = response.getPattern().matcher(path);
|
||||
for(Entry<Response, Route> routes : this.responses.entrySet()){
|
||||
if(routes.getValue().type().equals(type)){
|
||||
Matcher matcher = this.patterns.get(routes.getKey()).matcher(path);
|
||||
if(matcher.matches()){
|
||||
if(user == null && response.needLogin()) return;
|
||||
response.exec(matcher, user, reader, writer);
|
||||
if(user == null && routes.getValue().needLogin()) return;
|
||||
routes.getKey().exec(matcher, user, reader, writer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue