From 6ccaf3883c0a5b1a77b613547b275c6025674add Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 5 Mar 2025 02:27:17 -0800 Subject: feat: Development commit --- Sora/Data/Booru/BooruProvider.swift | 27 ---------- Sora/Data/Booru/BooruProviderFlavor.swift | 20 ------- Sora/Data/Booru/Provider/BooruProvider.swift | 61 ++++++++++++++++++++++ Sora/Data/Booru/Provider/BooruProviderCustom.swift | 13 +++++ Sora/Data/Booru/Provider/BooruProviderFlavor.swift | 20 +++++++ 5 files changed, 94 insertions(+), 47 deletions(-) delete mode 100644 Sora/Data/Booru/BooruProvider.swift delete mode 100644 Sora/Data/Booru/BooruProviderFlavor.swift create mode 100644 Sora/Data/Booru/Provider/BooruProvider.swift create mode 100644 Sora/Data/Booru/Provider/BooruProviderCustom.swift create mode 100644 Sora/Data/Booru/Provider/BooruProviderFlavor.swift (limited to 'Sora/Data/Booru') diff --git a/Sora/Data/Booru/BooruProvider.swift b/Sora/Data/Booru/BooruProvider.swift deleted file mode 100644 index 3642da0..0000000 --- a/Sora/Data/Booru/BooruProvider.swift +++ /dev/null @@ -1,27 +0,0 @@ -enum BooruProvider: String, CaseIterable, Codable { - case danbooru = "Danbooru" - case gelbooru = "Gelbooru" - case konachan = "Konachan.com" - case safebooru = "Safebooru" - case sakugabooru = "sakugabooru" - case yandere = "yande.re" - - // MARK: - Properties - var domain: String { - Self.domains[self] ?? rawValue.lowercased() - } - - var asFileNameComponent: String { - rawValue.lowercased().replacingOccurrences(of: ".", with: "_") - } - - // 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", - ] -} diff --git a/Sora/Data/Booru/BooruProviderFlavor.swift b/Sora/Data/Booru/BooruProviderFlavor.swift deleted file mode 100644 index c94a40d..0000000 --- a/Sora/Data/Booru/BooruProviderFlavor.swift +++ /dev/null @@ -1,20 +0,0 @@ -enum BooruProviderFlavor: String, CaseIterable, Codable { - case danbooru = "Danbooru" - case gelbooru = "Gelbooru" - case moebooru = "Moebooru" - - // MARK: - Initialization - init(provider: BooruProvider) { - self = Self.providerMap[provider] ?? .gelbooru - } - - // MARK: - Private - private static let providerMap: [BooruProvider: Self] = [ - .danbooru: .danbooru, - .yandere: .moebooru, - .konachan: .moebooru, - .sakugabooru: .moebooru, - .safebooru: .gelbooru, - .gelbooru: .gelbooru, - ] -} 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", + ] +} diff --git a/Sora/Data/Booru/Provider/BooruProviderCustom.swift b/Sora/Data/Booru/Provider/BooruProviderCustom.swift new file mode 100644 index 0000000..a2be323 --- /dev/null +++ b/Sora/Data/Booru/Provider/BooruProviderCustom.swift @@ -0,0 +1,13 @@ +import Foundation + +struct BooruProviderCustom: Identifiable, Codable, Hashable { + let id: UUID + var baseURL: String + var flavor: BooruProviderFlavor + + init(baseURL: String, flavor: BooruProviderFlavor, id: UUID = UUID()) { + self.id = id + self.baseURL = baseURL + self.flavor = flavor + } +} diff --git a/Sora/Data/Booru/Provider/BooruProviderFlavor.swift b/Sora/Data/Booru/Provider/BooruProviderFlavor.swift new file mode 100644 index 0000000..c94a40d --- /dev/null +++ b/Sora/Data/Booru/Provider/BooruProviderFlavor.swift @@ -0,0 +1,20 @@ +enum BooruProviderFlavor: String, CaseIterable, Codable { + case danbooru = "Danbooru" + case gelbooru = "Gelbooru" + case moebooru = "Moebooru" + + // MARK: - Initialization + init(provider: BooruProvider) { + self = Self.providerMap[provider] ?? .gelbooru + } + + // MARK: - Private + private static let providerMap: [BooruProvider: Self] = [ + .danbooru: .danbooru, + .yandere: .moebooru, + .konachan: .moebooru, + .sakugabooru: .moebooru, + .safebooru: .gelbooru, + .gelbooru: .gelbooru, + ] +} -- cgit v1.2.3