From 397a85eaa4539bebcbfeb5fb689cfac982314edd Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 9 Oct 2023 15:18:53 +0200 Subject: [PATCH] (query-service) Apply blacklisting to search results --- .../main/java/nu/marginalia/query/QueryService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/services-core/query-service/src/main/java/nu/marginalia/query/QueryService.java b/code/services-core/query-service/src/main/java/nu/marginalia/query/QueryService.java index e0f54315..9ee4e0d5 100644 --- a/code/services-core/query-service/src/main/java/nu/marginalia/query/QueryService.java +++ b/code/services-core/query-service/src/main/java/nu/marginalia/query/QueryService.java @@ -3,8 +3,10 @@ package nu.marginalia.query; import com.google.gson.Gson; import com.google.inject.Inject; import nu.marginalia.client.Context; +import nu.marginalia.db.DomainBlacklist; import nu.marginalia.index.client.IndexClient; import nu.marginalia.index.client.model.query.SearchSpecification; +import nu.marginalia.index.client.model.results.DecoratedSearchResultItem; import nu.marginalia.index.client.model.results.SearchResultSet; import nu.marginalia.query.model.QueryParams; import nu.marginalia.query.model.QueryResponse; @@ -21,17 +23,20 @@ public class QueryService extends Service { private final IndexClient indexClient; private final Gson gson; + private final DomainBlacklist blacklist; private final QueryFactory queryFactory; @Inject public QueryService(BaseServiceParams params, IndexClient indexClient, Gson gson, + DomainBlacklist blacklist, QueryFactory queryFactory) { super(params); this.indexClient = indexClient; this.gson = gson; + this.blacklist = blacklist; this.queryFactory = queryFactory; Spark.post("/delegate/", this::delegateToIndex, gson::toJson); @@ -45,6 +50,8 @@ public class QueryService extends Service { var query = queryFactory.createQuery(params); var rsp = executeQuery(Context.fromRequest(request), query.specs); + rsp.results.removeIf(this::isBlacklisted); + response.type("application/json"); return new QueryResponse( @@ -68,4 +75,8 @@ public class QueryService extends Service { private SearchResultSet executeQuery(Context ctx, SearchSpecification query) { return indexClient.query(ctx, query); } + + private boolean isBlacklisted(DecoratedSearchResultItem item) { + return blacklist.isBlacklisted(item.domainId()); + } }