resolve entry link when url is relative (fix #181)

This commit is contained in:
Athou
2013-05-26 07:28:32 +02:00
parent 122acfcf70
commit f04b24796c
5 changed files with 32 additions and 13 deletions

View File

@@ -76,7 +76,9 @@ public class FeedParser {
entry.setGuid(FeedUtils.truncate(item.getUri(), 2048)); entry.setGuid(FeedUtils.truncate(item.getUri(), 2048));
entry.setGuidHash(DigestUtils.sha1Hex(item.getUri())); entry.setGuidHash(DigestUtils.sha1Hex(item.getUri()));
entry.setUrl(FeedUtils.truncate(item.getLink(), 2048)); entry.setUrl(FeedUtils.toAbsoluteUrl(
FeedUtils.truncate(item.getLink(), 2048),
feed.getLink()));
entry.setUpdated(validateDate(getUpdateDate(item))); entry.setUpdated(validateDate(getUpdateDate(item)));
entry.setAuthor(FeedUtils.truncate(item.getAuthor(), 128)); entry.setAuthor(FeedUtils.truncate(item.getAuthor(), 128));

View File

@@ -185,4 +185,23 @@ public class FeedUtils {
Collections.reverse(timestamps); Collections.reverse(timestamps);
return timestamps; return timestamps;
} }
public static String removeTrailingSlash(String url) {
if (url.endsWith("/")) {
url = url.substring(0, url.length() - 1);
}
return url;
}
public static String toAbsoluteUrl(String url, String baseUrl) {
if (baseUrl == null || url == null || url.startsWith("http")) {
return url;
}
if (url.startsWith("/") == false) {
url = "/" + url;
}
return baseUrl + url;
}
} }

View File

@@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory;
import com.commafeed.backend.HttpGetter; import com.commafeed.backend.HttpGetter;
import com.commafeed.backend.dao.FeedPushInfoDAO; import com.commafeed.backend.dao.FeedPushInfoDAO;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.model.FeedPushInfo;
import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.backend.services.ApplicationSettingsService;
@@ -39,10 +40,9 @@ public class SubscriptionHandler {
FeedPushInfo info = feed.getPushInfo(); FeedPushInfo info = feed.getPushInfo();
String hub = info.getHub(); String hub = info.getHub();
String topic = info.getTopic(); String topic = info.getTopic();
String publicUrl = applicationSettingsService.get().getPublicUrl(); String publicUrl = FeedUtils
if (publicUrl.endsWith("/")) { .removeTrailingSlash(applicationSettingsService.get()
publicUrl = publicUrl.substring(0, publicUrl.length() - 1); .getPublicUrl());
}
log.debug("sending new pubsub subscription to {} for {}", hub, topic); log.debug("sending new pubsub subscription to {} for {}", hub, topic);

View File

@@ -9,6 +9,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.commafeed.backend.StartupBean; import com.commafeed.backend.StartupBean;
import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.feeds.OPMLImporter; import com.commafeed.backend.feeds.OPMLImporter;
import com.commafeed.backend.model.ApplicationSettings; import com.commafeed.backend.model.ApplicationSettings;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
@@ -44,10 +45,7 @@ public class GoogleImportCallbackPage extends WebPage {
UserDAO userDAO; UserDAO userDAO;
public static String getCallbackUrl(String publicUrl) { public static String getCallbackUrl(String publicUrl) {
if (publicUrl.endsWith("/")) { return FeedUtils.removeTrailingSlash(publicUrl) + "/" + PAGE_PATH;
publicUrl = publicUrl.substring(0, publicUrl.length() - 1);
}
return publicUrl + "/" + PAGE_PATH;
} }
public GoogleImportCallbackPage(PageParameters params) { public GoogleImportCallbackPage(PageParameters params) {

View File

@@ -14,6 +14,7 @@ import org.apache.wicket.model.Model;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
import com.commafeed.frontend.pages.components.BootstrapFeedbackPanel; import com.commafeed.frontend.pages.components.BootstrapFeedbackPanel;
@@ -67,10 +68,9 @@ public class PasswordRecoveryPage extends BasePage {
private String buildEmailContent(User user) throws Exception { private String buildEmailContent(User user) throws Exception {
String publicUrl = applicationSettingsService.get().getPublicUrl(); String publicUrl = FeedUtils
if (publicUrl.endsWith("/")) { .removeTrailingSlash(applicationSettingsService.get()
publicUrl = publicUrl.substring(0, publicUrl.length() - 1); .getPublicUrl());
}
publicUrl += "/recover2"; publicUrl += "/recover2";
return String return String