Skip to content

Commit

Permalink
Add: OLL Support
Browse files Browse the repository at this point in the history
  • Loading branch information
marcandreher committed May 8, 2024
1 parent b93d5c6 commit ecc15c0
Show file tree
Hide file tree
Showing 5 changed files with 185 additions and 1 deletion.
33 changes: 33 additions & 0 deletions src/main/java/osu/serverlist/Cache/ClientKeys.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package osu.serverlist.Cache;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import commons.marcandreher.Cache.Action.DatabaseAction;
import commons.marcandreher.Commons.Flogger;

public class ClientKeys extends DatabaseAction {

private final String KEY_SQL = "SELECT * FROM `un_clients`";

public static ArrayList<String> keys = new ArrayList<>();

@Override
public void executeAction(Flogger logger) {
ArrayList<String> keys = new ArrayList<>();
super.executeAction(logger);

ResultSet keyResultSet = mysql.Query(KEY_SQL);
try {
while (keyResultSet.next()) {
keys.add(keyResultSet.getString("key"));
}

ClientKeys.keys = keys;
} catch (SQLException e) {
logger.error(e);
}
}

}
7 changes: 6 additions & 1 deletion src/main/java/osu/serverlist/Main/Api.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import commons.marcandreher.Commons.WebServer;
import commons.marcandreher.Input.CommandHandler;
import freemarker.template.Configuration;
import osu.serverlist.Cache.ClientKeys;
import osu.serverlist.Cache.RefreshHeatmap;
import osu.serverlist.Sites.Endpoints.BanchoPyStatsRoute;
import osu.serverlist.Sites.Endpoints.CategoriesRoute;
Expand All @@ -22,6 +23,7 @@
import osu.serverlist.Sites.Endpoints.ChartTypesRoute;
import osu.serverlist.Sites.Endpoints.ServerRoute;
import osu.serverlist.Sites.Endpoints.ServersRoute;
import osu.serverlist.Sites.Endpoints.client.ClientServersRoute;
import osu.serverlist.Sites.Models.Config;

import spark.Spark;
Expand Down Expand Up @@ -64,9 +66,12 @@ public static void main(String[] args) {
router.get("/api/v1/chart/data", new ChartDataRoute());
router.get("/api/v1/chart/votes/data", new ChartDataVoteRoute());

router.get("/api/v2/client/servers", new ClientServersRoute());

CacheTimer ct = new CacheTimer(30, 1, TimeUnit.MINUTES);
ct.addAction(new ClientKeys());
ct.addAction(new RefreshHeatmap());

router.get("/api/v1/heatmap", new ChartHeatMapRoute());
cmd.registerCommand(new ExceptionManager());
cmd.initialize();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package osu.serverlist.Sites.Endpoints.client;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


import commons.marcandreher.Engine.JsonProcessingRoute;
import commons.marcandreher.Utils.TimestampConverter;
import osu.serverlist.Cache.ClientKeys;
import osu.serverlist.Sites.Models.ClientServer;
import osu.serverlist.Sites.Models.ServerHelper;
import spark.Request;
import spark.Response;

public class ClientServersRoute extends JsonProcessingRoute {

private final String SQL_QUERY = "SELECT * FROM `un_servers` WHERE `visible` = 1";

@Override
public Object handle(Request request, Response response) {
Object ob = super.handle(request, response);
if(ob != null) return ob;

if(request.queryParams("key") == null) return customError("No key provided");

if(!(ClientKeys.keys.contains(request.queryParams("key")))) return customError("Invalid key");

ArrayList<ClientServer> serverList = new ArrayList<>();

ResultSet serverResultSet = mysql.Query(SQL_QUERY);
try {
while (serverResultSet.next()) {
ClientServer v = new ClientServer();
v.setName(serverResultSet.getString("name"));
v.setId(serverResultSet.getInt("id"));
v.setImage(ServerHelper.repairLogo(serverResultSet.getString("logo_loc")));
v.setPlayers(serverResultSet.getInt("players"));
v.setVotes(serverResultSet.getInt("votes"));
v.setTimestamp(TimestampConverter.getDiffString(serverResultSet.getString("created")));
v.setDevserver(serverResultSet.getString("devserver"));
v.setUrl("https://" + serverResultSet.getString("url"));

v.setSafe_name(v.getName().toLowerCase().replaceAll(" ", ""));

serverList.add(v);
}
return returnResponse(serverList);
} catch (SQLException e) {
return internalDbError();
} catch (Exception e) {
e.printStackTrace();
return internalError();
}
}
}
89 changes: 89 additions & 0 deletions src/main/java/osu/serverlist/Sites/Models/ClientServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package osu.serverlist.Sites.Models;

public class ClientServer {

private int id;
private String name;
private String safe_name;
private String url;
private String devserver;

private String image;
private int players;
private int votes;

private String timestamp;

public int getId() {
return this.id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}

public String getSafe_name() {
return this.safe_name;
}

public void setSafe_name(String safe_name) {
this.safe_name = safe_name;
}

public String getUrl() {
return this.url;
}

public void setUrl(String url) {
this.url = url;
}

public String getDevserver() {
return this.devserver;
}

public void setDevserver(String devserver) {
this.devserver = devserver;
}

public String getImage() {
return this.image;
}

public void setImage(String image) {
this.image = image;
}

public int getPlayers() {
return this.players;
}

public void setPlayers(int players) {
this.players = players;
}

public int getVotes() {
return this.votes;
}

public void setVotes(int votes) {
this.votes = votes;
}

public String getTimestamp() {
return this.timestamp;
}

public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ public static String repairLogo(String logo) {
return Api.configObj.getDomain() + logo;
}
}

}

0 comments on commit ecc15c0

Please sign in to comment.