36 lines
1.9 KiB
Swift
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"))
|
|
}
|
|
}
|
|
}
|