Make website url configurable for search engine redirects

This commit is contained in:
vlofgren 2022-06-09 21:47:59 +02:00
parent 0e65384781
commit 389818c6c3
3 changed files with 16 additions and 5 deletions

View File

@ -0,0 +1,7 @@
package nu.marginalia.wmsa.configuration;
public record WebsiteUrl(String url) {
public String withPath(String path) {
return url + path;
}
}

View File

@ -2,12 +2,14 @@ package nu.marginalia.wmsa.edge.search;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import nu.marginalia.util.language.conf.LanguageModels; import nu.marginalia.util.language.conf.LanguageModels;
import nu.marginalia.wmsa.configuration.WebsiteUrl;
import nu.marginalia.wmsa.configuration.WmsaHome; import nu.marginalia.wmsa.configuration.WmsaHome;
public class EdgeSearchModule extends AbstractModule { public class EdgeSearchModule extends AbstractModule {
public void configure() { public void configure() {
bind(LanguageModels.class).toInstance(WmsaHome.getLanguageModels()); bind(LanguageModels.class).toInstance(WmsaHome.getLanguageModels());
bind(WebsiteUrl.class).toInstance(new WebsiteUrl(System.getProperty("website-url", "https://search.marginalia.nu/")));
} }
} }

View File

@ -8,6 +8,7 @@ import com.google.inject.name.Named;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import nu.marginalia.wmsa.api.model.ApiSearchResult; import nu.marginalia.wmsa.api.model.ApiSearchResult;
import nu.marginalia.wmsa.api.model.ApiSearchResults; import nu.marginalia.wmsa.api.model.ApiSearchResults;
import nu.marginalia.wmsa.configuration.WebsiteUrl;
import nu.marginalia.wmsa.configuration.server.Context; import nu.marginalia.wmsa.configuration.server.Context;
import nu.marginalia.wmsa.configuration.server.Initialization; import nu.marginalia.wmsa.configuration.server.Initialization;
import nu.marginalia.wmsa.configuration.server.MetricsServer; import nu.marginalia.wmsa.configuration.server.MetricsServer;
@ -34,7 +35,7 @@ public class EdgeSearchService extends Service {
private final EdgeIndexClient indexClient; private final EdgeIndexClient indexClient;
private final EdgeSearchOperator searchOperator; private final EdgeSearchOperator searchOperator;
private final CommandEvaluator searchCommandEvaulator; private final CommandEvaluator searchCommandEvaulator;
private final WebsiteUrl websiteUrl;
private static final Logger logger = LoggerFactory.getLogger(EdgeSearchService.class); private static final Logger logger = LoggerFactory.getLogger(EdgeSearchService.class);
@SneakyThrows @SneakyThrows
@ -45,13 +46,14 @@ public class EdgeSearchService extends Service {
Initialization initialization, Initialization initialization,
MetricsServer metricsServer, MetricsServer metricsServer,
EdgeSearchOperator searchOperator, EdgeSearchOperator searchOperator,
CommandEvaluator searchCommandEvaulator CommandEvaluator searchCommandEvaulator,
) { WebsiteUrl websiteUrl) {
super(ip, port, initialization, metricsServer); super(ip, port, initialization, metricsServer);
this.indexClient = indexClient; this.indexClient = indexClient;
this.searchOperator = searchOperator; this.searchOperator = searchOperator;
this.searchCommandEvaulator = searchCommandEvaulator; this.searchCommandEvaulator = searchCommandEvaulator;
this.websiteUrl = websiteUrl;
Spark.staticFiles.expireTime(600); Spark.staticFiles.expireTime(600);
@ -79,7 +81,7 @@ public class EdgeSearchService extends Service {
final String query = URLEncoder.encode(String.format("%s site:%s", queryRaw, site), StandardCharsets.UTF_8); final String query = URLEncoder.encode(String.format("%s site:%s", queryRaw, site), StandardCharsets.UTF_8);
final String profile = request.queryParamOrDefault("profile", "yolo"); final String profile = request.queryParamOrDefault("profile", "yolo");
response.redirect("https://search.marginalia.nu/search?query="+query+"&profile="+profile); response.redirect(websiteUrl.withPath("search?query="+query+"&profile="+profile));
return null; return null;
} }
@ -141,7 +143,7 @@ public class EdgeSearchService extends Service {
final String queryParam = request.queryParams("query"); final String queryParam = request.queryParams("query");
if (null == queryParam || queryParam.isBlank()) { if (null == queryParam || queryParam.isBlank()) {
response.redirect("https://search.marginalia.nu/"); response.redirect(websiteUrl.url());
return null; return null;
} }