Files

36 lines
1.9 KiB
Swift

import Foundation
import OrgSocialKit
enum UploaderFactory {
static func makeUploader() -> (any FeedUploader)? {
let d = UserDefaults.standard
let method = UploadMethod(rawValue: d.string(forKey: "uploadMethod") ?? "") ?? .vfile
switch method {
case .vfile:
guard let raw = d.string(forKey: "vfileURL"), let url = URL(string: raw) else { return nil }
return VFileUploader(tokenURL: url)
case .github:
let token = d.string(forKey: "githubToken") ?? ""
let owner = d.string(forKey: "githubOwner") ?? ""
let repo = d.string(forKey: "githubRepo") ?? ""
guard !token.isEmpty, !owner.isEmpty, !repo.isEmpty else { return nil }
return GitHubUploader(token: token, owner: owner, repo: repo,
path: d.string(forKey: "githubPath") ?? "social.org",
branch: d.string(forKey: "githubBranch") ?? "main")
case .codeberg:
let token = d.string(forKey: "codebergToken") ?? ""
let owner = d.string(forKey: "codebergOwner") ?? ""
let repo = d.string(forKey: "codebergRepo") ?? ""
guard !token.isEmpty, !owner.isEmpty, !repo.isEmpty else { return nil }
return CodebergUploader(token: token, owner: owner, repo: repo,
path: d.string(forKey: "codebergPath") ?? "social.org",
branch: d.string(forKey: "codebergBranch") ?? "main",
instance: d.string(forKey: "codebergInstance") ?? "https://codeberg.org")
case .webdav:
guard let raw = d.string(forKey: "webdavURL"), let url = URL(string: raw) else { return nil }
return WebDAVUploader(url: url, username: d.string(forKey: "webdavUsername"),
password: d.string(forKey: "webdavPassword"))
}
}
}