Skip to content
This repository was archived by the owner on Jun 17, 2024. It is now read-only.

Commit 96f2076

Browse files
committed
feat: 👽️ refactor with new api
1 parent 75de232 commit 96f2076

File tree

9 files changed

+288
-247
lines changed

9 files changed

+288
-247
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.bsrserver;
2+
3+
import java.nio.file.Path;
4+
import java.util.concurrent.Executors;
5+
import java.util.concurrent.ScheduledExecutorService;
6+
7+
import org.slf4j.Logger;
8+
import com.google.inject.Inject;
9+
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
10+
import com.velocitypowered.api.plugin.Plugin;
11+
import com.velocitypowered.api.event.Subscribe;
12+
import com.velocitypowered.api.proxy.ProxyServer;
13+
import com.velocitypowered.api.plugin.annotation.DataDirectory;
14+
15+
import org.bsrserver.config.Config;
16+
import org.bsrserver.data.hitokoto.QuotationsManager;
17+
import org.bsrserver.data.servers.ServersManager;
18+
import org.bsrserver.event.ServerConnectedEventEventListener;
19+
20+
@Plugin(
21+
id = "altairgreeter",
22+
name = "Altair Greeter",
23+
version = "1.4.0",
24+
url = "https://www.bsrserver.org:8443",
25+
description = "A greeter",
26+
authors = {"Andy Zhang"}
27+
)
28+
public class AltairGreeter {
29+
private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
30+
private final ProxyServer proxyServer;
31+
private final Logger logger;
32+
private final QuotationsManager quotationsManager;
33+
private final ServersManager serversManager;
34+
35+
@Inject
36+
public AltairGreeter(ProxyServer proxyServer, Logger logger, @DataDirectory Path dataDirectory) {
37+
this.proxyServer = proxyServer;
38+
this.logger = logger;
39+
40+
// load config
41+
Config.getInstance().loadConfig(dataDirectory);
42+
43+
// init data
44+
this.quotationsManager = new QuotationsManager(this);
45+
this.serversManager = new ServersManager(this);
46+
}
47+
48+
@Subscribe
49+
public void onInitialize(ProxyInitializeEvent event) {
50+
// register command
51+
proxyServer.getEventManager().register(this, new ServerConnectedEventEventListener(this));
52+
}
53+
54+
public ScheduledExecutorService getScheduledExecutorService() {
55+
return scheduledExecutorService;
56+
}
57+
58+
public ProxyServer getProxyServer() {
59+
return proxyServer;
60+
}
61+
62+
public Logger getLogger() {
63+
return logger;
64+
}
65+
66+
public QuotationsManager getQuotationsManager() {
67+
return quotationsManager;
68+
}
69+
70+
public ServersManager getServersManager() {
71+
return serversManager;
72+
}
73+
}

src/main/java/org/bsrserver/Main.java

Lines changed: 0 additions & 98 deletions
This file was deleted.

src/main/java/org/bsrserver/components/Sentences.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/main/java/org/bsrserver/config/Config.java

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import java.io.File;
44
import java.io.IOException;
5-
import java.nio.file.Files;
65
import java.nio.file.Path;
6+
import java.nio.file.Files;
77
import java.util.Objects;
88

99
import com.moandjiezana.toml.Toml;
@@ -30,31 +30,18 @@ public void loadConfig(Path dataDirectory) {
3030
if (!configFile.exists()) {
3131
try {
3232
Files.copy(Objects.requireNonNull(getClass().getClassLoader().getResourceAsStream("config.toml")), configFile.toPath());
33-
} catch (IOException e) {
34-
e.printStackTrace();
33+
} catch (IOException ignored) {
3534
}
3635
}
3736

3837
configToml = new Toml().read(configFile);
3938
}
4039

41-
public String getDatabaseUrl() {
42-
return configToml.getString("database.url");
43-
}
44-
45-
public String getDatabaseUser() {
46-
return configToml.getString("database.user");
47-
}
48-
49-
public String getDatabasePassword() {
50-
return configToml.getString("database.password");
51-
}
52-
53-
public String getDatabaseTable() {
54-
return configToml.getString("database.table");
40+
public String getBackendBaseUrl() {
41+
return configToml.getString("backend.baseurl");
5542
}
5643

57-
public String getSentencesUrl() {
58-
return configToml.getString("sentences.url");
44+
public String getBackendSecuredClientKey() {
45+
return configToml.getString("backend.securedClientKey");
5946
}
6047
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.bsrserver.data.hitokoto;
2+
3+
import java.io.IOException;
4+
import java.util.ArrayList;
5+
import java.util.concurrent.TimeUnit;
6+
7+
import org.slf4j.Logger;
8+
import okhttp3.Request;
9+
import okhttp3.Response;
10+
import okhttp3.OkHttpClient;
11+
import com.alibaba.fastjson2.JSONArray;
12+
import com.alibaba.fastjson2.JSONObject;
13+
14+
import org.bsrserver.AltairGreeter;
15+
import org.bsrserver.config.Config;
16+
17+
public class QuotationsManager {
18+
private final ArrayList<String> quotations = new ArrayList<>();
19+
private final Logger logger;
20+
21+
public QuotationsManager(AltairGreeter altairGreeter) {
22+
this.logger = altairGreeter.getLogger();
23+
altairGreeter.getScheduledExecutorService().scheduleAtFixedRate(this::scheduledTask, 0, 30, TimeUnit.SECONDS);
24+
}
25+
26+
private void scheduledTask() {
27+
try {
28+
updateQuotations();
29+
} catch (Exception e) {
30+
logger.error("Failed to get quotations", e);
31+
}
32+
}
33+
34+
private void updateQuotations() {
35+
// clear
36+
quotations.clear();
37+
38+
// request
39+
String authorization = "KeySecuredClient " + Config.getInstance().getBackendSecuredClientKey();
40+
OkHttpClient client = new OkHttpClient();
41+
Request getRequest = new Request.Builder()
42+
.url(Config.getInstance().getBackendBaseUrl() + "/v1/hitokoto/quotations")
43+
.header("Authorization", authorization)
44+
.build();
45+
46+
// get quotations
47+
JSONArray quotationsJSONArray = null;
48+
try {
49+
Response response = client.newCall(getRequest).execute();
50+
if (response.body() != null) {
51+
quotationsJSONArray = JSONObject
52+
.parseObject(response.body().string())
53+
.getJSONObject("data")
54+
.getJSONArray("quotations");
55+
}
56+
} catch (IOException exception) {
57+
logger.error("Failed to get quotations", exception);
58+
}
59+
60+
// save quotations
61+
if (quotationsJSONArray != null) {
62+
for (JSONObject quotation : quotationsJSONArray.toArray(JSONObject.class)) {
63+
quotations.add(quotation.getString("sourceName") + ":" + quotation.getString("content"));
64+
}
65+
}
66+
}
67+
68+
public String getRandomQuotation() {
69+
if (!quotations.isEmpty()) {
70+
return quotations.get((int) (Math.random() * quotations.size()));
71+
} else {
72+
return "";
73+
}
74+
}
75+
}

src/main/java/org/bsrserver/components/ServerInfo.java renamed to src/main/java/org/bsrserver/data/servers/ServerInfo.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
package org.bsrserver.components;
1+
package org.bsrserver.data.servers;
22

33
import java.time.LocalDate;
44

55
public record ServerInfo(
66
String serverName,
7-
String namedName,
8-
LocalDate foundationTime,
7+
String givenName,
8+
LocalDate foundationDate,
99
int priority
1010
) {
1111
@Override
1212
public String toString() {
1313
return "ServerInfo{" +
1414
"serverName='" + serverName + '\'' +
15-
", namedName='" + namedName + '\'' +
16-
", foundationTime=" + foundationTime +
15+
", givenName='" + givenName + '\'' +
16+
", foundationDate=" + foundationDate +
1717
", priority=" + priority +
1818
'}';
1919
}

0 commit comments

Comments
 (0)