summaryrefslogtreecommitdiff
path: root/Sora/Data/Booru/Provider/BooruProvider.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-03-05 02:27:17 -0800
committerFuwn <[email protected]>2025-03-05 02:27:17 -0800
commit6ccaf3883c0a5b1a77b613547b275c6025674add (patch)
tree2d948c96f1c0f7da85bef0ddb1fb402f9d5dfcdd /Sora/Data/Booru/Provider/BooruProvider.swift
parentfeat: Development commit (diff)
downloadsora-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.swift61
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",
+ ]
+}