Add GET /search route
This commit is contained in:
parent
2ff31dab1d
commit
b30df61c75
|
@ -42,10 +42,7 @@ import net.frozenorb.apiv3.handler.AuthorizationHandler;
|
|||
import net.frozenorb.apiv3.handler.MetricsHandler;
|
||||
import net.frozenorb.apiv3.handler.WebsiteUserSessionHandler;
|
||||
import net.frozenorb.apiv3.model.*;
|
||||
import net.frozenorb.apiv3.route.GETDumpsType;
|
||||
import net.frozenorb.apiv3.route.GETMetrics;
|
||||
import net.frozenorb.apiv3.route.GETWhoAmI;
|
||||
import net.frozenorb.apiv3.route.POSTLogout;
|
||||
import net.frozenorb.apiv3.route.*;
|
||||
import net.frozenorb.apiv3.route.accessTokens.DELETEAccessTokensId;
|
||||
import net.frozenorb.apiv3.route.accessTokens.GETAccessTokens;
|
||||
import net.frozenorb.apiv3.route.accessTokens.GETAccessTokensId;
|
||||
|
@ -412,6 +409,7 @@ public final class APIv3 extends AbstractVerticle {
|
|||
|
||||
http.get("/dumps/:dumpType").handler(new GETDumpsType());
|
||||
http.get("/metrics").handler(new GETMetrics());
|
||||
http.get("/search").blockingHandler(new GETSearch());
|
||||
http.get("/whoami").handler(new GETWhoAmI());
|
||||
http.post("/logout").handler(new POSTLogout());
|
||||
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
package net.frozenorb.apiv3.route;
|
||||
|
||||
import io.vertx.core.Handler;
|
||||
import io.vertx.ext.web.RoutingContext;
|
||||
import net.frozenorb.apiv3.APIv3;
|
||||
import net.frozenorb.apiv3.model.Rank;
|
||||
import net.frozenorb.apiv3.model.User;
|
||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||
import net.frozenorb.apiv3.util.SyncUtils;
|
||||
|
||||
public final class GETSearch implements Handler<RoutingContext> {
|
||||
|
||||
public void handle(RoutingContext ctx) {
|
||||
String type = ctx.request().getParam("type");
|
||||
String query = ctx.request().getParam("q");
|
||||
|
||||
if (type == null) {
|
||||
ErrorUtils.respondRequiredInput(ctx, "type");
|
||||
return;
|
||||
} else if (query == null) {
|
||||
ErrorUtils.respondRequiredInput(ctx, "q");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (type.toLowerCase()) {
|
||||
case "user":
|
||||
User user = SyncUtils.runBlocking(v -> User.findById(query, v));
|
||||
|
||||
if (user == null) {
|
||||
user = SyncUtils.runBlocking(v -> User.findByLastUsernameLower(query, v));
|
||||
}
|
||||
|
||||
if (user == null) {
|
||||
user = SyncUtils.runBlocking(v -> User.findByConfirmedEmail(query, v));
|
||||
}
|
||||
|
||||
if (user == null) {
|
||||
ErrorUtils.respondNotFound(ctx, "User", ctx.request().getParam("userId"));
|
||||
} else {
|
||||
APIv3.respondJson(ctx, 200, user);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
ErrorUtils.respondInvalidInput(ctx, type + " is not a valid search type. Valid types: [ user ]");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue