add badge route
This commit is contained in:
parent
1c951e8581
commit
61f6046659
3 changed files with 92 additions and 0 deletions
40
src/be/jeffcheasey88/peeratcode/model/Badge.java
Normal file
40
src/be/jeffcheasey88/peeratcode/model/Badge.java
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
package be.jeffcheasey88.peeratcode.model;
|
||||||
|
|
||||||
|
public class Badge {
|
||||||
|
private String name;
|
||||||
|
private byte[] logo;
|
||||||
|
private int level;
|
||||||
|
|
||||||
|
public Badge(String name, byte[] logo, int level) {
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
this.logo = logo;
|
||||||
|
this.level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getLogo() {
|
||||||
|
return logo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLogo(byte[] logo) {
|
||||||
|
this.logo = logo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLevel() {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevel(int level) {
|
||||||
|
this.level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ import com.password4j.Hash;
|
||||||
import com.password4j.Password;
|
import com.password4j.Password;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.Configuration;
|
import be.jeffcheasey88.peeratcode.Configuration;
|
||||||
|
import be.jeffcheasey88.peeratcode.model.Badge;
|
||||||
import be.jeffcheasey88.peeratcode.model.Chapter;
|
import be.jeffcheasey88.peeratcode.model.Chapter;
|
||||||
import be.jeffcheasey88.peeratcode.model.Completion;
|
import be.jeffcheasey88.peeratcode.model.Completion;
|
||||||
import be.jeffcheasey88.peeratcode.model.Player;
|
import be.jeffcheasey88.peeratcode.model.Player;
|
||||||
|
|
51
src/be/jeffcheasey88/peeratcode/routes/BadgeDetails.java
Normal file
51
src/be/jeffcheasey88/peeratcode/routes/BadgeDetails.java
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
package be.jeffcheasey88.peeratcode.routes;
|
||||||
|
|
||||||
|
import be.jeffcheasey88.peeratcode.model.Badge;
|
||||||
|
import be.jeffcheasey88.peeratcode.model.Player;
|
||||||
|
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||||
|
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.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 BadgeDetails implements Response {
|
||||||
|
|
||||||
|
private final DatabaseRepository databaseRepo;
|
||||||
|
|
||||||
|
public BadgeDetails(DatabaseRepository databaseRepo) {
|
||||||
|
this.databaseRepo = databaseRepo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
|
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||||
|
if (matcher.groupCount() > 0) {
|
||||||
|
int badgeId = Integer.parseInt(matcher.group(1));
|
||||||
|
Badge badge = databaseRepo.getBadge(badgeId);
|
||||||
|
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())));
|
||||||
|
badgeJSON.put("level", badge.getLevel());
|
||||||
|
}
|
||||||
|
writer.write(badgeJSON.toJSONString());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Pattern getPattern() {
|
||||||
|
return Pattern.compile("^\\/badge\\/([0-9]+)$");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue