create api http server
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package me.youhavetrouble.inviter;
|
package me.youhavetrouble.inviter;
|
||||||
|
|
||||||
|
import me.youhavetrouble.inviter.http.ApiServer;
|
||||||
import me.youhavetrouble.inviter.storage.MemoryStorage;
|
import me.youhavetrouble.inviter.storage.MemoryStorage;
|
||||||
import me.youhavetrouble.inviter.storage.Storage;
|
import me.youhavetrouble.inviter.storage.Storage;
|
||||||
import net.dv8tion.jda.api.JDA;
|
import net.dv8tion.jda.api.JDA;
|
||||||
@@ -9,20 +10,65 @@ import net.dv8tion.jda.api.utils.cache.CacheFlag;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger("Inviter");
|
public static final Logger LOGGER = LoggerFactory.getLogger("Inviter");
|
||||||
|
|
||||||
private static JDA jda;
|
private static JDA jda;
|
||||||
|
|
||||||
private static Storage storage;
|
private static Storage storage;
|
||||||
|
private static ApiServer apiServer;
|
||||||
|
|
||||||
public static void main(String[] args) throws InterruptedException {
|
public static void main(String[] args) throws InterruptedException {
|
||||||
|
|
||||||
String token = System.getenv("DISCORD_TOKEN");
|
String token = System.getenv("DISCORD_TOKEN");
|
||||||
|
|
||||||
|
if (token == null || token.isEmpty()) {
|
||||||
|
LOGGER.error("Discord token is not set. Please set the DISCORD_TOKEN environment variable.");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
String hostname = "127.0.0.1";
|
||||||
|
int port = 8080; // Default port
|
||||||
|
|
||||||
|
for (String arg : args) {
|
||||||
|
String[] parts = arg.split("=", 2);
|
||||||
|
if (parts.length < 2) {
|
||||||
|
LOGGER.error("Invalid argument format: {}", arg);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
String key = parts[0];
|
||||||
|
String value = parts[1];
|
||||||
|
|
||||||
|
switch (key) {
|
||||||
|
case "hostname":
|
||||||
|
if (value.isEmpty()) {
|
||||||
|
LOGGER.error("Hostname cannot be empty.");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
hostname = value;
|
||||||
|
break;
|
||||||
|
case "port":
|
||||||
|
try {
|
||||||
|
port = Integer.parseInt(value);
|
||||||
|
if (port <= 0 || port > 65535) {
|
||||||
|
LOGGER.error("Port must be a valid number between 1 and 65535.");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
LOGGER.error("Invalid port number: {}", value, e);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOGGER.warn("Unknown argument: {}", key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
jda = JDABuilder.create(
|
jda = JDABuilder.create(
|
||||||
token,
|
token,
|
||||||
Set.of(GatewayIntent.GUILD_INVITES)
|
Set.of(GatewayIntent.GUILD_INVITES)
|
||||||
@@ -42,8 +88,14 @@ public class Main {
|
|||||||
|
|
||||||
storage = new MemoryStorage(jda);
|
storage = new MemoryStorage(jda);
|
||||||
|
|
||||||
|
try {
|
||||||
|
apiServer = new ApiServer(hostname, port);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LOGGER.error("Failed to start the API server on {}:{}", hostname, port, e);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
LOGGER.info("Welcome to the Inviter Application!");
|
LOGGER.info("Welcome to the Inviter Application!");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package me.youhavetrouble.inviter.http;
|
||||||
|
|
||||||
|
import com.sun.net.httpserver.HttpServer;
|
||||||
|
import me.youhavetrouble.inviter.Main;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
public class ApiServer {
|
||||||
|
|
||||||
|
private final HttpServer server;
|
||||||
|
|
||||||
|
public ApiServer(String hostname, int port) throws IllegalArgumentException, IOException {
|
||||||
|
server = HttpServer.create(new InetSocketAddress(hostname, port), 0);
|
||||||
|
server.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
|
||||||
|
server.start();
|
||||||
|
Main.LOGGER.info("Http API server started on {}:{}", hostname, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user