Show document URI for any RSXML error

This commit is contained in:
relikd
2019-07-28 22:38:52 +02:00
parent 613d1f60d5
commit cd68febd88
4 changed files with 6 additions and 5 deletions

View File

@@ -22,6 +22,7 @@ and this project does NOT adhere to [Semantic Versioning](https://semver.org/spe
- Settings, Feeds: Actions 'delete' and 'edit' use clicked items instead of selected items - Settings, Feeds: Actions 'delete' and 'edit' use clicked items instead of selected items
- Comparison of existing articles with nonexistent guid and link - Comparison of existing articles with nonexistent guid and link
- Don't mark articles read if opening URLs failed - Don't mark articles read if opening URLs failed
- If an error occurs, show document URL (path to file or web url)
### Changed ### Changed
- Interface builder files replaced with code equivalent - Interface builder files replaced with code equivalent

View File

@@ -1 +1 @@
github "relikd/RSXML" "401f470ab00ab656843162e002e111331b001824" github "relikd/RSXML" "d7b51de438dc575fddf2b89d93a2647024396b17"

View File

@@ -245,7 +245,7 @@ static BOOL _nextUpdateIsForced = NO;
[self asyncRequest:request block:^(NSData * _Nullable data, NSError * _Nullable error, NSHTTPURLResponse *response) { [self asyncRequest:request block:^(NSData * _Nullable data, NSError * _Nullable error, NSHTTPURLResponse *response) {
RSParsedFeed *result = nil; RSParsedFeed *result = nil;
if (data) { // data = nil if (error || 304) if (data) { // data = nil if (error || 304)
RSXMLData *xml = [[RSXMLData alloc] initWithData:data urlString:response.URL.absoluteString]; RSXMLData *xml = [[RSXMLData alloc] initWithData:data url:response.URL];
if (xmlBlock && xmlBlock(xml, &error)) { if (xmlBlock && xmlBlock(xml, &error)) {
return; return;
} }
@@ -279,7 +279,7 @@ static BOOL _nextUpdateIsForced = NO;
if (*err) if (*err)
return NO; return NO;
if (!parsedMeta || parsedMeta.feedLinks.count == 0) { if (!parsedMeta || parsedMeta.feedLinks.count == 0) {
*err = RSXMLMakeErrorWrongParser(RSXMLErrorExpectingFeed, RSXMLErrorExpectingHTML); *err = RSXMLMakeErrorWrongParser(RSXMLErrorExpectingFeed, RSXMLErrorExpectingHTML, xml.url);
return NO; return NO;
} }
__block NSString *chosenURL = nil; __block NSString *chosenURL = nil;
@@ -451,7 +451,7 @@ static BOOL _nextUpdateIsForced = NO;
[self asyncRequest:[self newRequestURL:hostURL] block:^(NSData * _Nullable htmlData, NSError * _Nullable error, NSHTTPURLResponse *response) { [self asyncRequest:[self newRequestURL:hostURL] block:^(NSData * _Nullable htmlData, NSError * _Nullable error, NSHTTPURLResponse *response) {
if (htmlData) { if (htmlData) {
// TODO: use session delegate to stop downloading after <head> // TODO: use session delegate to stop downloading after <head>
RSXMLData *xml = [[RSXMLData alloc] initWithData:htmlData urlString:hostURL]; RSXMLData *xml = [[RSXMLData alloc] initWithData:htmlData url:response.URL];
RSHTMLMetadataParser *parser = [RSHTMLMetadataParser parserWithXMLData:xml]; RSHTMLMetadataParser *parser = [RSHTMLMetadataParser parserWithXMLData:xml];
RSHTMLMetadata *meta = [parser parseSync:&error]; RSHTMLMetadata *meta = [parser parseSync:&error];
if (error) meta = nil; if (error) meta = nil;

View File

@@ -97,7 +97,7 @@ NS_INLINE NSInteger RadioGroupSelection(NSView *view) {
if (finally) dispatch_group_enter(group); if (finally) dispatch_group_enter(group);
NSData *data = [NSData dataWithContentsOfURL:url]; NSData *data = [NSData dataWithContentsOfURL:url];
RSXMLData *xml = [[RSXMLData alloc] initWithData:data urlString:@"opml-file-import"]; RSXMLData *xml = [[RSXMLData alloc] initWithData:data url:url];
RSOPMLParser *parser = [RSOPMLParser parserWithXMLData:xml]; RSOPMLParser *parser = [RSOPMLParser parserWithXMLData:xml];
[parser parseAsync:^(RSOPMLItem * _Nullable doc, NSError * _Nullable error) { [parser parseAsync:^(RSOPMLItem * _Nullable doc, NSError * _Nullable error) {
if (error) { if (error) {