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", ] }