add badge route

This commit is contained in:
Francois G 2023-03-10 11:15:54 +01:00
parent 1c951e8581
commit 61f6046659
3 changed files with 92 additions and 0 deletions

View 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;
}
}

View file

@ -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;

View 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]+)$");
}
}