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()); + } }