// // FeedParser.swift // RSParser // // Created by Brent Simmons on 6/20/17. // Copyright © 2017 Ranchero Software, LLC. All rights reserved. // import Foundation import ParserObjC // FeedParser handles RSS, Atom, JSON Feed, and RSS-in-JSON. // You don’t need to know the type of feed. public struct FeedParser { public static func canParse(_ parserData: ParserData) -> Bool { let type = feedType(parserData) switch type { case .jsonFeed, .rssInJSON, .rss, .atom: return true default: return false } } public static func parse(_ parserData: ParserData) async throws -> ParsedFeed? { let type = feedType(parserData) switch type { case .jsonFeed: return try JSONFeedParser.parse(parserData) case .rssInJSON: return try RSSInJSONParser.parse(parserData) case .rss: return RSSParser.parse(parserData) case .atom: return AtomParser.parse(parserData) case .unknown, .notAFeed: return nil } } }