Compare commits
No commits in common. "740166f79fe1d0ded55f47c2a6402ae7797d281b" and "bf17ae800cc7aa4da8515c9881c88890e7950440" have entirely different histories.
740166f79f
...
bf17ae800c
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,4 +5,3 @@
|
|||||||
build
|
build
|
||||||
.vscode
|
.vscode
|
||||||
.env
|
.env
|
||||||
lavanodes.json
|
|
||||||
|
@ -31,7 +31,6 @@ dependencies {
|
|||||||
implementation(libs.logback)
|
implementation(libs.logback)
|
||||||
implementation(libs.log4jtoslf4j)
|
implementation(libs.log4jtoslf4j)
|
||||||
implementation(libs.jultoslf4j)
|
implementation(libs.jultoslf4j)
|
||||||
implementation(libs.jackson)
|
|
||||||
implementation(libs.lavalink)
|
implementation(libs.lavalink)
|
||||||
|
|
||||||
implementation(libs.marinaralib)
|
implementation(libs.marinaralib)
|
||||||
|
@ -6,8 +6,6 @@ import org.javacord.api.entity.intent.Intent;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonFactory;
|
|
||||||
|
|
||||||
import ch.qos.logback.classic.Level;
|
import ch.qos.logback.classic.Level;
|
||||||
import ch.qos.logback.classic.LoggerContext;
|
import ch.qos.logback.classic.LoggerContext;
|
||||||
import io.github.cdimascio.dotenv.Dotenv;
|
import io.github.cdimascio.dotenv.Dotenv;
|
||||||
@ -21,7 +19,6 @@ public class App {
|
|||||||
new App().connect();
|
new App().connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonFactory jsonFactory;
|
|
||||||
private Config config;
|
private Config config;
|
||||||
private DiscordApi client;
|
private DiscordApi client;
|
||||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
@ -29,7 +26,6 @@ public class App {
|
|||||||
private Marinara marinara;
|
private Marinara marinara;
|
||||||
|
|
||||||
private App() {
|
private App() {
|
||||||
this.jsonFactory = JsonFactory.builder().build();
|
|
||||||
Dotenv env = Dotenv.configure().ignoreIfMissing().load();
|
Dotenv env = Dotenv.configure().ignoreIfMissing().load();
|
||||||
this.config = new Config(env);
|
this.config = new Config(env);
|
||||||
|
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
package net.tomatentum.tomatenmusic3.lavalink;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JacksonException;
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
|
||||||
import com.fasterxml.jackson.core.Version;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
|
||||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
|
||||||
|
|
||||||
import dev.arbjerg.lavalink.client.loadbalancing.IRegionFilter;
|
|
||||||
import dev.arbjerg.lavalink.client.loadbalancing.RegionGroup;
|
|
||||||
|
|
||||||
public class IRegionFilterDeserializer extends StdDeserializer<IRegionFilter> {
|
|
||||||
|
|
||||||
public static ObjectMapper register(ObjectMapper mapper) {
|
|
||||||
SimpleModule module =
|
|
||||||
new SimpleModule("IRegionFilterDeserializer", new Version(1, 0, 0, null, null, null));
|
|
||||||
module.addDeserializer(IRegionFilter.class, new IRegionFilterDeserializer());
|
|
||||||
mapper.registerModule(module);
|
|
||||||
return mapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IRegionFilterDeserializer() {
|
|
||||||
super(IRegionFilter.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IRegionFilter deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JacksonException {
|
|
||||||
String regionString = parser.getValueAsString();
|
|
||||||
return RegionGroup.INSTANCE.valueOf(regionString);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
package net.tomatentum.tomatenmusic3.lavalink;
|
|
||||||
|
|
||||||
import dev.arbjerg.lavalink.client.NodeOptions;
|
|
||||||
import dev.arbjerg.lavalink.client.loadbalancing.IRegionFilter;
|
|
||||||
|
|
||||||
public record LavalinkNodeOptions(String name, String host, int port, String password, IRegionFilter regionGroup) {
|
|
||||||
|
|
||||||
public NodeOptions toNodeOptions() {
|
|
||||||
return new NodeOptions.Builder()
|
|
||||||
.setName(name)
|
|
||||||
.setServerUri("ws://{}:{}".formatted(host, port))
|
|
||||||
.setPassword(password)
|
|
||||||
.setRegionFilter(regionGroup)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,69 +1,32 @@
|
|||||||
package net.tomatentum.tomatenmusic3.lavalink;
|
package net.tomatentum.tomatenmusic3.lavalink;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.javacord.api.DiscordApi;
|
import org.javacord.api.DiscordApi;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonFactory;
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
import dev.arbjerg.lavalink.client.Helpers;
|
import dev.arbjerg.lavalink.client.Helpers;
|
||||||
import dev.arbjerg.lavalink.client.LavalinkClient;
|
import dev.arbjerg.lavalink.client.LavalinkClient;
|
||||||
|
import dev.arbjerg.lavalink.client.NodeOptions;
|
||||||
import net.tomatentum.tomatenmusic3.Config;
|
import net.tomatentum.tomatenmusic3.Config;
|
||||||
|
|
||||||
public class LavalinkWrapper {
|
public class LavalinkWrapper {
|
||||||
|
|
||||||
private static final String NODES_FILE_NAME = "lavanodes.json";
|
private Config config;
|
||||||
private static final String NODES_INFO_FORMAT = "Node {} info:\n\tURI: {}\n\tRegion: {}";
|
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
private DiscordApi client;
|
private DiscordApi client;
|
||||||
private JsonFactory jsonFactory;
|
|
||||||
|
|
||||||
private LavalinkClient lavaClient;
|
private LavalinkClient lavaClient;
|
||||||
|
|
||||||
public LavalinkWrapper(Config config, DiscordApi client, JsonFactory jsonFactory) {
|
public LavalinkWrapper(Config config, DiscordApi client) {
|
||||||
|
this.config = config;
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.jsonFactory = jsonFactory;
|
|
||||||
|
|
||||||
this.lavaClient = new LavalinkClient(Helpers.getUserIdFromToken(config.token()));
|
this.lavaClient = new LavalinkClient(Helpers.getUserIdFromToken(config.token()));
|
||||||
getNodes().forEach(node -> {
|
getNodes().forEach((x) -> lavaClient.addNode(x));
|
||||||
lavaClient.addNode(node.toNodeOptions());
|
|
||||||
logger.info("Registered node {}", node.name());
|
|
||||||
logger.debug(NODES_INFO_FORMAT, node.name(), node.toNodeOptions().getServerUri(), node.regionGroup());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Set<LavalinkNodeOptions> getNodes() {
|
protected Set<NodeOptions> getNodes() {
|
||||||
File nodesFile = new File(
|
//TODO
|
||||||
new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile()).getParent(),
|
|
||||||
NODES_FILE_NAME);
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper(jsonFactory);
|
|
||||||
IRegionFilterDeserializer.register(objectMapper);
|
|
||||||
|
|
||||||
try {
|
|
||||||
List<LavalinkNodeOptions> nodes = objectMapper.readValue(nodesFile, new TypeReference<List<LavalinkNodeOptions>>(){});
|
|
||||||
return new HashSet<>(nodes);
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.error("lavanodes.json seems to not exist.", e);
|
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public LavalinkClient client() {
|
|
||||||
return this.lavaClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DiscordApi discordClient() {
|
|
||||||
return this.client;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ logback = "1.5.15"
|
|||||||
slf4j = "2.0.16"
|
slf4j = "2.0.16"
|
||||||
log4jtoslf4j = "2.24.3"
|
log4jtoslf4j = "2.24.3"
|
||||||
jultoslf4j = "2.0.16"
|
jultoslf4j = "2.0.16"
|
||||||
jackson = "2.18.2"
|
|
||||||
marinara = "1.0.0-RC1-9d88ca9"
|
marinara = "1.0.0-RC1-9d88ca9"
|
||||||
lavalink = "3.1.0"
|
lavalink = "3.1.0"
|
||||||
|
|
||||||
@ -21,7 +20,6 @@ logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback"}
|
|||||||
slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j"}
|
slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j"}
|
||||||
log4jtoslf4j = { module = "org.apache.logging.log4j:log4j-to-slf4j", version.ref = "log4jtoslf4j"}
|
log4jtoslf4j = { module = "org.apache.logging.log4j:log4j-to-slf4j", version.ref = "log4jtoslf4j"}
|
||||||
jultoslf4j = { module = "org.slf4j:jul-to-slf4j", version.ref = "jultoslf4j"}
|
jultoslf4j = { module = "org.slf4j:jul-to-slf4j", version.ref = "jultoslf4j"}
|
||||||
jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson"}
|
|
||||||
lavalink = { module = "dev.arbjerg:lavalink-client", version.ref = "lavalink"}
|
lavalink = { module = "dev.arbjerg:lavalink-client", version.ref = "lavalink"}
|
||||||
|
|
||||||
marinaralib = { module = "net.tomatentum.Marinara:lib-dev", version.ref = "marinara"}
|
marinaralib = { module = "net.tomatentum.Marinara:lib-dev", version.ref = "marinara"}
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"name": "node1",
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 2333,
|
|
||||||
"password": "youshallnotpass",
|
|
||||||
"regionGroup": "EUROPE"
|
|
||||||
}
|
|
||||||
]
|
|
Loading…
x
Reference in New Issue
Block a user