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();
|
JSONObject badgeJSON = new JSONObject();
|
||||||
if (badge != null) {
|
if (badge != null) {
|
||||||
badgeJSON.put("name", badge.getName());
|
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());
|
badgeJSON.put("level", badge.getLevel());
|
||||||
}
|
}
|
||||||
writer.write(badgeJSON.toJSONString());
|
writer.write(badgeJSON.toJSONString().replace("\\", ""));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
|
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
|
||||||
|
@ -48,4 +48,4 @@ public class BadgeDetails implements Response {
|
||||||
public Pattern getPattern() {
|
public Pattern getPattern() {
|
||||||
return Pattern.compile("^\\/badge\\/([0-9]+)$");
|
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.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 Login implements Response {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Route(path = "^\\/login$", 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){
|
||||||
|
@ -49,14 +51,4 @@ public class Login implements Response {
|
||||||
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
|
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.Response;
|
||||||
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.Arrays;
|
||||||
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;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -54,9 +57,4 @@ public class PlayerDetails implements Response {
|
||||||
public Pattern getPattern() {
|
public Pattern getPattern() {
|
||||||
return Pattern.compile("^\\/player\\/(.+)?$");
|
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 ;
|
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;
|
package be.jeffcheasey88.peeratcode.webserver;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.lang.reflect.Method;
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.jose4j.jwk.RsaJsonWebKey;
|
import org.jose4j.jwk.RsaJsonWebKey;
|
||||||
import org.jose4j.jwk.RsaJwkGenerator;
|
import org.jose4j.jwk.RsaJwkGenerator;
|
||||||
|
@ -15,7 +18,8 @@ import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
|
|
||||||
public class Router{
|
public class Router{
|
||||||
|
|
||||||
private List<Response> responses;
|
private Map<Response, Route> responses;
|
||||||
|
private Map<Response, Pattern> patterns;
|
||||||
private Response noFileFound;
|
private Response noFileFound;
|
||||||
private RsaJsonWebKey rsaJsonWebKey;
|
private RsaJsonWebKey rsaJsonWebKey;
|
||||||
private DatabaseRepository repo;
|
private DatabaseRepository repo;
|
||||||
|
@ -26,7 +30,8 @@ public class Router{
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
this.token_issuer = token_issuer;
|
this.token_issuer = token_issuer;
|
||||||
this.token_expiration = token_expiration;
|
this.token_expiration = token_expiration;
|
||||||
this.responses = new ArrayList<>();
|
this.responses = new HashMap<>();
|
||||||
|
this.patterns = new HashMap<>();
|
||||||
this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
|
this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +40,15 @@ public class Router{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(Response response){
|
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){
|
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 {
|
public void exec(String type, String path, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
for(Response response : this.responses){
|
for(Entry<Response, Route> routes : this.responses.entrySet()){
|
||||||
if(type.equals(response.getType())){
|
if(routes.getValue().type().equals(type)){
|
||||||
Matcher matcher = response.getPattern().matcher(path);
|
Matcher matcher = this.patterns.get(routes.getKey()).matcher(path);
|
||||||
if(matcher.matches()){
|
if(matcher.matches()){
|
||||||
if(user == null && response.needLogin()) return;
|
if(user == null && routes.getValue().needLogin()) return;
|
||||||
response.exec(matcher, user, reader, writer);
|
routes.getKey().exec(matcher, user, reader, writer);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue