mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 13:09:00 +00:00
(search) Turn relative feed URLs absolute when dealing with RSS/Atom item URLs
This commit is contained in:
parent
6a6318d04c
commit
b5469bd8a1
@ -85,8 +85,16 @@ public class SearchFrontPageService {
|
||||
title = "[Missing Title]";
|
||||
}
|
||||
|
||||
|
||||
String url = item.getUrl();
|
||||
if (url.startsWith("/")) { // relative URL
|
||||
url = "https://" + feed.getDomain() + url;
|
||||
} else if (!url.contains(":")) { // no schema, assume relative URL
|
||||
url = "https://" + feed.getDomain() + "/" + url;
|
||||
}
|
||||
|
||||
itemsAll.add(
|
||||
new NewsItem(title, item.getUrl(), feed.getDomain(), item.getDescription(), item.getDate())
|
||||
new NewsItem(title, url, feed.getDomain(), item.getDescription(), item.getDate())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -381,11 +381,23 @@ public class SearchSiteInfoService {
|
||||
|
||||
public record FeedItem(String title, String date, String description, String url) {
|
||||
|
||||
public FeedItem(RpcFeedItem rpcFeedItem) {
|
||||
public FeedItem(String domain, RpcFeedItem rpcFeedItem) {
|
||||
this(rpcFeedItem.getTitle(),
|
||||
rpcFeedItem.getDate(),
|
||||
rpcFeedItem.getDescription(),
|
||||
rpcFeedItem.getUrl());
|
||||
absoluteFeedUrl(domain, rpcFeedItem.getUrl())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
private static String absoluteFeedUrl(String domain, String url) {
|
||||
if (url.startsWith("/")) { // relative URL
|
||||
url = "https://" + domain + url;
|
||||
} else if (!url.contains(":")) { // no schema, assume relative URL
|
||||
url = "https://" + domain + "/" + url;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
public String pubDay() { // Extract the date from an ISO style date string
|
||||
@ -412,8 +424,9 @@ public class SearchSiteInfoService {
|
||||
this(rpcFeedItems.getDomain(),
|
||||
rpcFeedItems.getFeedUrl(),
|
||||
rpcFeedItems.getUpdated(),
|
||||
rpcFeedItems.getItemsList().stream().map(FeedItem::new).toList());
|
||||
rpcFeedItems.getItemsList().stream().map(item -> new FeedItem(rpcFeedItems.getDomain(), item)).toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public record ReportDomain(
|
||||
|
Loading…
Reference in New Issue
Block a user