mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Updated to the latest RSWeb
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Submodule submodules/RSWeb updated: 9cb7ca9618...05388e4f70
Reference in New Issue
Block a user