// Path: src/main/java/stream/flarebot/flarebot/util/Constants.java
// public class Constants {
// 
//     public static final long OFFICIAL_GUILD = 226785954537406464L;
//     private static final String FLAREBOT_API = "https://api.flarebot.stream";
//     private static final String FLAREBOT_API_DEV = "http://localhost:8880";
//     public static final String INVITE_URL = "https://discord.gg/TTAUGvZ";
//     public static final String INVITE_MARKDOWN = "[Support Server](" + INVITE_URL + ")";
// 
//     public static final long DEVELOPER_ID = 226788297156853771L;
//     public static final long ADMINS_ID = 434438873565888542L;
//     public static final long CONTRIBUTOR_ID = 272324832279003136L;
// 
//     private static final String FLARE_TEST_BOT_CHANNEL = "242297848123621376";
//     public static final char COMMAND_CHAR = '_';
//     public static final String COMMAND_CHAR_STRING = String.valueOf(COMMAND_CHAR);
// 
//     @Deprecated
//     public static Guild getOfficialGuild() {
//         return Getters.getGuildById(OFFICIAL_GUILD);
//     }
// 
//     public static TextChannel getErrorLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("226786557862871040"));
//     }
// 
//     public static TextChannel getGuildLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("260401007685664768"));
//     }
// 
//     private static TextChannel getEGLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("358950369642151937"));
//     }
// 
//     public static void logEG(String eg, Command command, Guild guild, User user) {
//         EmbedBuilder builder = new EmbedBuilder().setTitle("Found `" + eg + "`")
//                 .addField("Guild", guild.getId() + " (`" + guild.getName() + "`) ", true)
//                 .addField("User", user.getAsMention() + " (`" + user.getName() + "#" + user.getDiscriminator() + "`)", true)
//                 .setTimestamp(LocalDateTime.now(Clock.systemUTC()));
//         if (command != null) builder.addField("Command", command.getCommand(), true);
//         Constants.getEGLogChannel().sendMessage(builder.build()).queue();
//     }
// 
//     public static TextChannel getImportantLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("358978253966278657"));
//     }
// 
//     public static String getAPI() {
//         return FlareBot.instance().isTestBot() ? FLAREBOT_API_DEV : FLAREBOT_API;
//     }
// }


import stream.flarebot.flarebot.util.Constants;
import static stream.flarebot.flarebot.api.Method.GET;
import static stream.flarebot.flarebot.api.Method.PATCH;
import static stream.flarebot.flarebot.api.Method.POST;
import static stream.flarebot.flarebot.api.Method.PUT;
package stream.flarebot.flarebot.api;



public enum ApiRoute {

    // Root route
    COMMANDS(POST, "/commands"),

    // Stats route
    UPDATE_DATA(POST, "/stats/data"),
    DISPATCH_COMMAND(POST, "/stats/command"),

    // Guild route
    UPDATE_PREFIX(PATCH, "/guild/prefix"),

    // Guild/options route
    GET_OPTIONS_AUTOMODD(GET, "/guild/options/automod"),
    GET_OPTIONS_LANGUAGE(GET, "/guild/options/language"),

    // Debug route
    TEST(POST, "/test"),
    ;

    private Method method;
    private String route;

    ApiRoute(Method method, String route) {
        this.method = method;
        this.route = route;
    }

    public Method getMethod() {
        return this.method;
    }

    public String getRoute() {
        return this.route;
    }

    public String getFullUrl() {
// Path: src/main/java/stream/flarebot/flarebot/util/Constants.java
// public class Constants {
// 
//     public static final long OFFICIAL_GUILD = 226785954537406464L;
//     private static final String FLAREBOT_API = "https://api.flarebot.stream";
//     private static final String FLAREBOT_API_DEV = "http://localhost:8880";
//     public static final String INVITE_URL = "https://discord.gg/TTAUGvZ";
//     public static final String INVITE_MARKDOWN = "[Support Server](" + INVITE_URL + ")";
// 
//     public static final long DEVELOPER_ID = 226788297156853771L;
//     public static final long ADMINS_ID = 434438873565888542L;
//     public static final long CONTRIBUTOR_ID = 272324832279003136L;
// 
//     private static final String FLARE_TEST_BOT_CHANNEL = "242297848123621376";
//     public static final char COMMAND_CHAR = '_';
//     public static final String COMMAND_CHAR_STRING = String.valueOf(COMMAND_CHAR);
// 
//     @Deprecated
//     public static Guild getOfficialGuild() {
//         return Getters.getGuildById(OFFICIAL_GUILD);
//     }
// 
//     public static TextChannel getErrorLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("226786557862871040"));
//     }
// 
//     public static TextChannel getGuildLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("260401007685664768"));
//     }
// 
//     private static TextChannel getEGLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("358950369642151937"));
//     }
// 
//     public static void logEG(String eg, Command command, Guild guild, User user) {
//         EmbedBuilder builder = new EmbedBuilder().setTitle("Found `" + eg + "`")
//                 .addField("Guild", guild.getId() + " (`" + guild.getName() + "`) ", true)
//                 .addField("User", user.getAsMention() + " (`" + user.getName() + "#" + user.getDiscriminator() + "`)", true)
//                 .setTimestamp(LocalDateTime.now(Clock.systemUTC()));
//         if (command != null) builder.addField("Command", command.getCommand(), true);
//         Constants.getEGLogChannel().sendMessage(builder.build()).queue();
//     }
// 
//     public static TextChannel getImportantLogChannel() {
//         return (FlareBot.instance().isTestBot() ?
//                 Getters.getChannelById(Constants.FLARE_TEST_BOT_CHANNEL) :
//                 Getters.getChannelById("358978253966278657"));
//     }
// 
//     public static String getAPI() {
//         return FlareBot.instance().isTestBot() ? FLAREBOT_API_DEV : FLAREBOT_API;
//     }
// }


// Path: src/main/java/stream/flarebot/flarebot/api/ApiRoute.java
import stream.flarebot.flarebot.util.Constants;
import static stream.flarebot.flarebot.api.Method.GET;
import static stream.flarebot.flarebot.api.Method.PATCH;
import static stream.flarebot.flarebot.api.Method.POST;
import static stream.flarebot.flarebot.api.Method.PUT;

package stream.flarebot.flarebot.api;



public enum ApiRoute {

    // Root route
    COMMANDS(POST, "/commands"),

    // Stats route
    UPDATE_DATA(POST, "/stats/data"),
    DISPATCH_COMMAND(POST, "/stats/command"),

    // Guild route
    UPDATE_PREFIX(PATCH, "/guild/prefix"),

    // Guild/options route
    GET_OPTIONS_AUTOMODD(GET, "/guild/options/automod"),
    GET_OPTIONS_LANGUAGE(GET, "/guild/options/language"),

    // Debug route
    TEST(POST, "/test"),
    ;

    private Method method;
    private String route;

    ApiRoute(Method method, String route) {
        this.method = method;
        this.route = route;
    }

    public Method getMethod() {
        return this.method;
    }

    public String getRoute() {
        return this.route;
    }

    public String getFullUrl() {
        return Constants.getAPI() + route;