mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
display error when importing invalid OPML file
This commit is contained in:
@@ -18,6 +18,7 @@ import com.commafeed.backend.service.FeedSubscriptionService;
|
|||||||
import com.commafeed.backend.service.FeedSubscriptionService.FeedSubscriptionException;
|
import com.commafeed.backend.service.FeedSubscriptionService.FeedSubscriptionException;
|
||||||
import com.rometools.opml.feed.opml.Opml;
|
import com.rometools.opml.feed.opml.Opml;
|
||||||
import com.rometools.opml.feed.opml.Outline;
|
import com.rometools.opml.feed.opml.Outline;
|
||||||
|
import com.rometools.rome.io.FeedException;
|
||||||
import com.rometools.rome.io.WireFeedInput;
|
import com.rometools.rome.io.WireFeedInput;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -32,19 +33,14 @@ public class OPMLImporter {
|
|||||||
private final FeedSubscriptionService feedSubscriptionService;
|
private final FeedSubscriptionService feedSubscriptionService;
|
||||||
private final CacheService cache;
|
private final CacheService cache;
|
||||||
|
|
||||||
public void importOpml(User user, String xml) {
|
public void importOpml(User user, String xml) throws IllegalArgumentException, FeedException {
|
||||||
xml = xml.substring(xml.indexOf('<'));
|
xml = xml.substring(xml.indexOf('<'));
|
||||||
WireFeedInput input = new WireFeedInput();
|
WireFeedInput input = new WireFeedInput();
|
||||||
try {
|
Opml feed = (Opml) input.build(new StringReader(xml));
|
||||||
Opml feed = (Opml) input.build(new StringReader(xml));
|
List<Outline> outlines = feed.getOutlines();
|
||||||
List<Outline> outlines = feed.getOutlines();
|
for (int i = 0; i < outlines.size(); i++) {
|
||||||
for (int i = 0; i < outlines.size(); i++) {
|
handleOutline(user, outlines.get(i), null, i);
|
||||||
handleOutline(user, outlines.get(i), null, i);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error(e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleOutline(User user, Outline outline, FeedCategory parent, int position) {
|
private void handleOutline(User user, Outline outline, FeedCategory parent, int position) {
|
||||||
|
|||||||
@@ -12,30 +12,31 @@ import com.commafeed.backend.dao.FeedCategoryDAO;
|
|||||||
import com.commafeed.backend.model.FeedCategory;
|
import com.commafeed.backend.model.FeedCategory;
|
||||||
import com.commafeed.backend.model.User;
|
import com.commafeed.backend.model.User;
|
||||||
import com.commafeed.backend.service.FeedSubscriptionService;
|
import com.commafeed.backend.service.FeedSubscriptionService;
|
||||||
|
import com.rometools.rome.io.FeedException;
|
||||||
|
|
||||||
class OPMLImporterTest {
|
class OPMLImporterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testOpmlV10() throws IOException {
|
void testOpmlV10() throws IOException, IllegalArgumentException, FeedException {
|
||||||
testOpmlVersion("/opml/opml_v1.0.xml");
|
testOpmlVersion("/opml/opml_v1.0.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testOpmlV11() throws IOException {
|
void testOpmlV11() throws IOException, IllegalArgumentException, FeedException {
|
||||||
testOpmlVersion("/opml/opml_v1.1.xml");
|
testOpmlVersion("/opml/opml_v1.1.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testOpmlV20() throws IOException {
|
void testOpmlV20() throws IOException, IllegalArgumentException, FeedException {
|
||||||
testOpmlVersion("/opml/opml_v2.0.xml");
|
testOpmlVersion("/opml/opml_v2.0.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testOpmlNoVersion() throws IOException {
|
void testOpmlNoVersion() throws IOException, IllegalArgumentException, FeedException {
|
||||||
testOpmlVersion("/opml/opml_noversion.xml");
|
testOpmlVersion("/opml/opml_noversion.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testOpmlVersion(String fileName) throws IOException {
|
private void testOpmlVersion(String fileName) throws IOException, IllegalArgumentException, FeedException {
|
||||||
FeedCategoryDAO feedCategoryDAO = Mockito.mock(FeedCategoryDAO.class);
|
FeedCategoryDAO feedCategoryDAO = Mockito.mock(FeedCategoryDAO.class);
|
||||||
FeedSubscriptionService feedSubscriptionService = Mockito.mock(FeedSubscriptionService.class);
|
FeedSubscriptionService feedSubscriptionService = Mockito.mock(FeedSubscriptionService.class);
|
||||||
CacheService cacheService = Mockito.mock(CacheService.class);
|
CacheService cacheService = Mockito.mock(CacheService.class);
|
||||||
|
|||||||
Reference in New Issue
Block a user