diff --git a/src/main/java/net/frozenorb/apiv3/APIv3.java b/src/main/java/net/frozenorb/apiv3/APIv3.java index 4fc5a7b..ef623bb 100644 --- a/src/main/java/net/frozenorb/apiv3/APIv3.java +++ b/src/main/java/net/frozenorb/apiv3/APIv3.java @@ -6,16 +6,9 @@ import com.mongodb.async.client.MongoDatabase; import io.vertx.core.AbstractVerticle; import io.vertx.ext.web.Router; import lombok.Getter; -import net.frozenorb.apiv3.accessor.AuditLog; -import net.frozenorb.apiv3.accessor.Grants; -import net.frozenorb.apiv3.accessor.Servers; -import net.frozenorb.apiv3.accessor.Users; -import net.frozenorb.apiv3.util.ErrorUtils; -import net.frozenorb.apiv3.util.JsonUtils; +import net.frozenorb.apiv3.routes.*; import net.frozenorb.apiv3.util.MongoUtils; -import java.util.UUID; - public final class APIv3 extends AbstractVerticle { @Getter private static MongoDatabase mongo; @@ -24,83 +17,33 @@ public final class APIv3 extends AbstractVerticle { // TODO: consistency -- sometimes we refer to a user as user or target. public void start() { - Router coreHttpRouter = Router.router(vertx); + setupDatabase(); + setupHttp(); + } + + public void setupDatabase() { mongo = MongoUtils.initializeConnection(ImmutableList.of(new ServerAddress("ds055505.mongolab.com", 55505)), "minehqapi", "test", "test".toCharArray()); + } + + public void setupHttp() { + Router rootRouter = Router.router(vertx); // We always reply in JSON. - coreHttpRouter.route("/*").handler(ctx -> { + rootRouter.route("/*").handler(ctx -> { ctx.response().putHeader("content-type", "application/json"); ctx.next(); }); - coreHttpRouter.get("/servers").handler(ctx -> { - Servers.findAll((servers, error) -> { - if (error != null) { - ctx.response().end(ErrorUtils.createResponse(error).toJson()); - } else { - ctx.response().end(JsonUtils.toLiteJsonString(servers)); - } - }); - }); + rootRouter.mountSubRouter("/auditLog", AuditLogRouter.create(vertx)); + rootRouter.mountSubRouter("/grants", GrantRouter.create(vertx)); + rootRouter.mountSubRouter("/ipLog", IPLogRouter.create(vertx)); + rootRouter.mountSubRouter("/notifications", NotificationRouter.create(vertx)); + rootRouter.mountSubRouter("/punishments", PunishmentRouter.create(vertx)); + rootRouter.mountSubRouter("/serverGroups", ServerGroupRouter.create(vertx)); + rootRouter.mountSubRouter("/servers", ServerGroupRouter.create(vertx)); + rootRouter.mountSubRouter("/users", UserRouter.create(vertx)); - coreHttpRouter.get("/server/:server").handler(ctx -> { - String serverId = ctx.request().getParam("server"); - - Servers.findById(serverId, (server, error) -> { - if (error != null) { - ctx.response().end(ErrorUtils.createResponse(error).toJson()); - } else if (server != null) { - ctx.response().end(JsonUtils.toLiteJsonString(server)); - } else { - ctx.response().end(ErrorUtils.createResponse("Server '" + serverId + "' not found.").toJson()); - } - }); - }); - - coreHttpRouter.get("/user/:user").handler(ctx -> { - UUID target = UUID.fromString(ctx.request().getParam("user")); - - Users.findById(target.toString(), (user, error) -> { - if (error != null) { - ctx.response().end(ErrorUtils.createResponse(error).toJson()); - } else if (user != null) { - ctx.response().end(JsonUtils.toLiteJsonString(user)); - } else { - ctx.response().end(ErrorUtils.createResponse("User '" + target + "' not found.").toJson()); - } - }); - }); - - coreHttpRouter.get("/user/:user/grants").handler(ctx -> { - UUID target = UUID.fromString(ctx.request().getParam("user")); - - Grants.findByTarget(target, (grants, error) -> { - if (error != null) { - ctx.response().end(ErrorUtils.createResponse(error).toJson()); - } else { - ctx.response().end(JsonUtils.toLiteJsonString(grants)); - } - }); - }); - - coreHttpRouter.get("/auditLog").handler(ctx -> { - AuditLog.findAll((auditLogEntries, error) -> { - if (error != null) { - ctx.response().end(ErrorUtils.createResponse(error).toJson()); - } else { - ctx.response().end(JsonUtils.toLiteJsonString(auditLogEntries)); - } - }); - }); - - coreHttpRouter.get("/doAction/:actionType").handler(ctx -> { - String actionType = ctx.request().getParam("actionType"); - - //AuditLog.log(UUID.randomUUID(), "192.168.1.103", actionType, new Document()); - ctx.response().end("{'logged': true}"); - }); - - vertx.createHttpServer().requestHandler(coreHttpRouter::accept).listen(8080); + vertx.createHttpServer().requestHandler(rootRouter::accept).listen(8080); } } \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/AuditLogRouter.java b/src/main/java/net/frozenorb/apiv3/routes/AuditLogRouter.java new file mode 100644 index 0000000..5736b07 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/AuditLogRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class AuditLogRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/GrantRouter.java b/src/main/java/net/frozenorb/apiv3/routes/GrantRouter.java new file mode 100644 index 0000000..63c6909 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/GrantRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class GrantRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/IPLogRouter.java b/src/main/java/net/frozenorb/apiv3/routes/IPLogRouter.java new file mode 100644 index 0000000..dc3836d --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/IPLogRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class IPLogRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/NotificationRouter.java b/src/main/java/net/frozenorb/apiv3/routes/NotificationRouter.java new file mode 100644 index 0000000..8f75426 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/NotificationRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class NotificationRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/PunishmentRouter.java b/src/main/java/net/frozenorb/apiv3/routes/PunishmentRouter.java new file mode 100644 index 0000000..3583b84 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/PunishmentRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class PunishmentRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/ServerGroupRouter.java b/src/main/java/net/frozenorb/apiv3/routes/ServerGroupRouter.java new file mode 100644 index 0000000..8c98fc0 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/ServerGroupRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class ServerGroupRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/ServerRouter.java b/src/main/java/net/frozenorb/apiv3/routes/ServerRouter.java new file mode 100644 index 0000000..1b25289 --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/ServerRouter.java @@ -0,0 +1,87 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class ServerRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + + /* + coreHttpRouter.get("/servers").handler(ctx -> { + Servers.findAll((servers, error) -> { + if (error != null) { + ctx.response().end(ErrorUtils.createResponse(error).toJson()); + } else { + ctx.response().end(JsonUtils.toLiteJsonString(servers)); + } + }); + }); + + coreHttpRouter.get("/server/:server").handler(ctx -> { + String serverId = ctx.request().getParam("server"); + + Servers.findById(serverId, (server, error) -> { + if (error != null) { + ctx.response().end(ErrorUtils.createResponse(error).toJson()); + } else if (server != null) { + ctx.response().end(JsonUtils.toLiteJsonString(server)); + } else { + ctx.response().end(ErrorUtils.createResponse("Server '" + serverId + "' not found.").toJson()); + } + }); + }); + + coreHttpRouter.get("/user/:user").handler(ctx -> { + UUID target = UUID.fromString(ctx.request().getParam("user")); + + Users.findById(target.toString(), (user, error) -> { + if (error != null) { + ctx.response().end(ErrorUtils.createResponse(error).toJson()); + } else if (user != null) { + ctx.response().end(JsonUtils.toLiteJsonString(user)); + } else { + ctx.response().end(ErrorUtils.createResponse("User '" + target + "' not found.").toJson()); + } + }); + }); + + coreHttpRouter.get("/user/:user/grants").handler(ctx -> { + UUID target = UUID.fromString(ctx.request().getParam("user")); + + Grants.findByTarget(target, (grants, error) -> { + if (error != null) { + ctx.response().end(ErrorUtils.createResponse(error).toJson()); + } else { + ctx.response().end(JsonUtils.toLiteJsonString(grants)); + } + }); + }); + + coreHttpRouter.get("/auditLog").handler(ctx -> { + AuditLog.findAll((auditLogEntries, error) -> { + if (error != null) { + ctx.response().end(ErrorUtils.createResponse(error).toJson()); + } else { + ctx.response().end(JsonUtils.toLiteJsonString(auditLogEntries)); + } + }); + }); + + coreHttpRouter.get("/doAction/:actionType").handler(ctx -> { + String actionType = ctx.request().getParam("actionType"); + + //AuditLog.log(UUID.randomUUID(), "192.168.1.103", actionType, new Document()); + ctx.response().end("{'logged': true}"); + }); + */ + +} \ No newline at end of file diff --git a/src/main/java/net/frozenorb/apiv3/routes/UserRouter.java b/src/main/java/net/frozenorb/apiv3/routes/UserRouter.java new file mode 100644 index 0000000..45bf5de --- /dev/null +++ b/src/main/java/net/frozenorb/apiv3/routes/UserRouter.java @@ -0,0 +1,18 @@ +package net.frozenorb.apiv3.routes; + +import io.vertx.core.Vertx; +import io.vertx.ext.web.Router; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class UserRouter { + + public static Router create(Vertx vertx) { + Router router = Router.router(vertx); + + + + return router; + } + +} \ No newline at end of file