import Foundation struct AudioRankingResponse: Decodable { let showRankChange: Bool let type: AudioRankingType let items: [AudioRankingItemResponse] } enum AudioRankingType: String, Decodable, CaseIterable, Hashable { case weeklyPopular = "WEEKLY_POPULAR" case rising = "RISING" case revenue = "REVENUE" case salesCount = "SALES_COUNT" case commentCount = "COMMENT_COUNT" case likeCount = "LIKE_COUNT" var title: String { switch self { case .weeklyPopular: return I18n.MainContentRanking.weeklyPopularTabTitle case .rising: return I18n.MainContentRanking.risingTabTitle case .revenue: return I18n.MainContentRanking.revenueTabTitle case .salesCount: return I18n.MainContentRanking.salesCountTabTitle case .commentCount: return I18n.MainContentRanking.commentCountTabTitle case .likeCount: return I18n.MainContentRanking.likeCountTabTitle } } } struct AudioRankingItemResponse: Decodable, Identifiable { let contentId: Int let title: String let creatorNickname: String let rank: Int let rankChange: Int? let isNew: Bool let coverImageUrl: String? var id: Int { contentId } }