NetNewsWire/Frameworks/Account/FeedProvider/FeedProvider.swift

39 lines
1.1 KiB
Swift
Raw Normal View History

2020-04-07 04:06:42 +02:00
//
// FeedProvider.swift
// FeedProvider
//
// Created by Maurice Parker on 4/6/20.
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import RSCore
import RSParser
public enum FeedProviderAbility {
case owner
case available
case none
}
2020-04-07 04:06:42 +02:00
public struct FeedProviderFeedMetaData {
let name: String
let homePageURL: String?
}
2020-04-07 22:25:33 +02:00
public protocol FeedProvider {
2020-04-07 04:06:42 +02:00
/// Informs the caller of the ability for this feed provider to service the given URL
func ability(_ urlComponents: URLComponents) -> FeedProviderAbility
/// Provide the iconURL of the given URL
func iconURL(_ urlComponents: URLComponents, completion: @escaping (Result<String, Error>) -> Void)
2020-05-08 23:13:25 +02:00
/// Construct the associated metadata for the new feed. If the URL won't be recognized by this Feed Provider, it will error here.
func metaData(_ urlComponents: URLComponents, completion: @escaping (Result<FeedProviderFeedMetaData, Error>) -> Void)
/// Refresh all the article entries (ParsedItems)
func refresh(_ webFeed: WebFeed, completion: @escaping (Result<Set<ParsedItem>, Error>) -> Void)
2020-04-07 04:06:42 +02:00
}