Updated to the latest RSWeb

This commit is contained in:
Maurice Parker
2020-04-19 13:17:24 -05:00
parent 02519f4cc9
commit 18c986f7fa
3 changed files with 31 additions and 9 deletions

View File

@@ -18,11 +18,10 @@ final class LocalAccountRefresher {
return DownloadSession(delegate: self)
}()
var progress: DownloadProgress {
return downloadSession.progress
}
var progress = DownloadProgress(numberOfTasks: 0)
public func refreshFeeds(_ feeds: Set<Feed>) {
progress.addToNumberOfTasksAndRemaining(feeds.count)
downloadSession.downloadObjects(feeds as NSSet)
}
}
@@ -30,7 +29,7 @@ final class LocalAccountRefresher {
// MARK: - DownloadSessionDelegate
extension LocalAccountRefresher: DownloadSessionDelegate {
func downloadSession(_ downloadSession: DownloadSession, requestForRepresentedObject representedObject: AnyObject) -> URLRequest? {
guard let feed = representedObject as? Feed else {
return nil
@@ -39,32 +38,40 @@ extension LocalAccountRefresher: DownloadSessionDelegate {
return nil
}
let request = NSMutableURLRequest(url: url)
var request = URLRequest(url: url)
if let conditionalGetInfo = feed.conditionalGetInfo {
conditionalGetInfo.addRequestHeadersToURLRequest(request)
conditionalGetInfo.addRequestHeadersToURLRequest(&request)
}
return request as URLRequest
}
func downloadSession(_ downloadSession: DownloadSession, downloadDidCompleteForRepresentedObject representedObject: AnyObject, response: URLResponse?, data: Data, error: NSError?) {
func downloadSession(_ downloadSession: DownloadSession, downloadDidCompleteForRepresentedObject representedObject: AnyObject, response: URLResponse?, data: Data, error: NSError?, completion: @escaping () -> Void) {
guard let feed = representedObject as? Feed, !data.isEmpty else {
progress.completeTask()
completion()
return
}
if let error = error {
print("Error downloading \(feed.url) - \(error)")
progress.completeTask()
completion()
return
}
let dataHash = data.md5String
if dataHash == feed.contentHash {
progress.completeTask()
completion()
return
}
let parserData = ParserData(url: feed.url, data: data)
FeedParser.parse(parserData) { (parsedFeed, error) in
guard let account = feed.account, let parsedFeed = parsedFeed, error == nil else {
self.progress.completeTask()
completion()
return
}
account.update(feed, with: parsedFeed) {
@@ -73,12 +80,15 @@ extension LocalAccountRefresher: DownloadSessionDelegate {
}
feed.contentHash = dataHash
self.progress.completeTask()
completion()
}
}
}
func downloadSession(_ downloadSession: DownloadSession, shouldContinueAfterReceivingData data: Data, representedObject: AnyObject) -> Bool {
guard let feed = representedObject as? Feed else {
progress.completeTask()
return false
}
@@ -86,6 +96,7 @@ extension LocalAccountRefresher: DownloadSessionDelegate {
return true
}
if data.isDefinitelyNotFeed() {
progress.completeTask()
return false
}
@@ -98,10 +109,21 @@ extension LocalAccountRefresher: DownloadSessionDelegate {
}
func downloadSession(_ downloadSession: DownloadSession, didReceiveUnexpectedResponse response: URLResponse, representedObject: AnyObject) {
progress.completeTask()
}
func downloadSession(_ downloadSession: DownloadSession, didReceiveNotModifiedResponse: URLResponse, representedObject: AnyObject) {
progress.completeTask()
}
func downloadSession(_ downloadSession: DownloadSession, didDiscardDuplicateRepresentedObject: AnyObject) {
progress.completeTask()
}
func downloadSessionDidCompleteDownloadObjects(_ downloadSession: DownloadSession) {
progress.clear()
}
}
// MARK: - Utility

View File

@@ -50,7 +50,7 @@ final class SendToMicroBlogCommand: SendToCommand {
let s = article.attributionString + article.linkString
let urlQueryDictionary = ["text": s]
guard let urlQueryString = urlQueryDictionary.urlQueryString() else {
guard let urlQueryString = urlQueryDictionary.urlQueryString else {
return
}
guard let url = URL(string: "microblog://post?" + urlQueryString) else {