enum BooruProvider: String, CaseIterable, Decodable, Encodable { case danbooru = "Danbooru" case gelbooru = "Gelbooru" case konachan = "Konachan.com" case safebooru = "Safebooru" case sakugabooru = "sakugabooru" case yandere = "yande.re" var domain: String { switch self { case .yandere: return "yande.re" case .konachan: return "konachan.com" case .sakugabooru: return "sakugabooru.com" case .safebooru: return "safebooru.org" case .gelbooru: return "gelbooru.com" case .danbooru: return "danbooru.donmai.us" } } func asFileNameComponent() -> String { rawValue.lowercased().replacingOccurrences(of: ".", with: "_") } }