diff options
| author | Fuwn <[email protected]> | 2025-03-05 02:27:17 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-03-05 02:27:17 -0800 |
| commit | 6ccaf3883c0a5b1a77b613547b275c6025674add (patch) | |
| tree | 2d948c96f1c0f7da85bef0ddb1fb402f9d5dfcdd /Sora/Data/Booru/Provider/BooruProvider.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-6ccaf3883c0a5b1a77b613547b275c6025674add.tar.xz sora-testing-6ccaf3883c0a5b1a77b613547b275c6025674add.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Data/Booru/Provider/BooruProvider.swift')
| -rw-r--r-- | Sora/Data/Booru/Provider/BooruProvider.swift | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Sora/Data/Booru/Provider/BooruProvider.swift b/Sora/Data/Booru/Provider/BooruProvider.swift new file mode 100644 index 0000000..84b76c8 --- /dev/null +++ b/Sora/Data/Booru/Provider/BooruProvider.swift @@ -0,0 +1,61 @@ +enum BooruProvider: CaseIterable, Codable, Hashable, Equatable { + case custom(BooruProviderCustom) + case danbooru + case gelbooru + case konachan + case safebooru + case sakugabooru + case yandere + + // MARK: - Computed Properties + var domain: String { + Self.domains[self] ?? rawValue.lowercased() + } + + var asFileNameComponent: String { + rawValue.lowercased().replacingOccurrences(of: ".", with: "_") + } + + static var allCases: [Self] { + [.danbooru, .gelbooru, .konachan, .safebooru, .sakugabooru, .yandere] + } + + static func == (lhs: Self, rhs: Self) -> Bool { + lhs.rawValue == rhs.rawValue + } + + var rawValue: String { + switch self { + case .danbooru: + "Danbooru" + + case .gelbooru: + "Gelbooru" + + case .konachan: + "Konachan.com" + + case .safebooru: + "Safebooru" + + case .sakugabooru: + "sakugabooru.com" + + case .yandere: + "yande.re" + + case .custom(let provider): + provider.baseURL + } + } + + // MARK: - Private + private static let domains: [Self: String] = [ + .yandere: "yande.re", + .konachan: "konachan.com", + .sakugabooru: "sakugabooru.com", + .safebooru: "safebooru.org", + .gelbooru: "gelbooru.com", + .danbooru: "danbooru.donmai.us", + ] +} |