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 be.jeffcheasey88.peeratcode.Configuration;
|
||||
import be.jeffcheasey88.peeratcode.model.Badge;
|
||||
import be.jeffcheasey88.peeratcode.model.Chapter;
|
||||
import be.jeffcheasey88.peeratcode.model.Completion;
|
||||
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