45 lines
843 B
Swift
45 lines
843 B
Swift
|
//
|
||
|
// OPMLImporter.swift
|
||
|
// Evergreen
|
||
|
//
|
||
|
// Created by Brent Simmons on 10/5/17.
|
||
|
// Copyright © 2017 Ranchero Software. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
import RSParser
|
||
|
import Account
|
||
|
|
||
|
struct OPMLImporter {
|
||
|
|
||
|
static func parseAndImport(fileURL: URL, account: Account) throws {
|
||
|
|
||
|
var fileData: Data?
|
||
|
|
||
|
do {
|
||
|
fileData = try Data(contentsOf: fileURL)
|
||
|
} catch {
|
||
|
print("Error reading OPML file. \(error)")
|
||
|
throw error
|
||
|
}
|
||
|
|
||
|
guard let opmlData = fileData else {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
let parserData = ParserData(url: fileURL.absoluteString, data: opmlData)
|
||
|
var opmlDocument: RSOPMLDocument?
|
||
|
|
||
|
do {
|
||
|
opmlDocument = try RSOPMLParser.parseOPML(with: parserData)
|
||
|
} catch {
|
||
|
print("Error parsing OPML file. \(error)")
|
||
|
throw error
|
||
|
}
|
||
|
|
||
|
if let opmlDocument = opmlDocument {
|
||
|
account.importOPML(opmlDocument)
|
||
|
}
|
||
|
}
|
||
|
}
|