diff --git a/wake/Models/MemberProfile.swift b/wake/Models/MemberProfile.swift index e69d6a4..b4e0919 100644 --- a/wake/Models/MemberProfile.swift +++ b/wake/Models/MemberProfile.swift @@ -16,6 +16,41 @@ struct MemberProfileResponse: Codable { } } +// MARK: - TitleRanking +struct TitleRanking: Codable { + let displayName: String + let ranking: Int + let value: Int + let materialType: String + let userId: String + let region: String + let userAvatarUrl: String? + let userNickName: String? + + enum CodingKeys: String, CodingKey { + case displayName = "display_name" + case ranking + case value + case materialType = "material_type" + case userId = "user_id" + case region + case userAvatarUrl = "user_avatar_url" + case userNickName = "user_nick_name" + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(displayName, forKey: .displayName) + try container.encode(ranking, forKey: .ranking) + try container.encode(value, forKey: .value) + try container.encode(materialType, forKey: .materialType) + try container.encode(userId, forKey: .userId) + try container.encode(region, forKey: .region) + try container.encodeIfPresent(userAvatarUrl, forKey: .userAvatarUrl) + try container.encodeIfPresent(userNickName, forKey: .userNickName) + } +} + // MARK: - MemberProfile struct MemberProfile: Codable { let materialCounter: MaterialCounter @@ -26,7 +61,7 @@ struct MemberProfile: Codable { let totalPoints: Int let usedBytes: Int let totalBytes: Int - let titleRankings: [String] + let titleRankings: [TitleRanking] let medalInfos: [MedalInfo] let membershipLevel: String let membershipEndAt: String @@ -57,7 +92,7 @@ struct MemberProfile: Codable { totalPoints = try container.decode(Int.self, forKey: .totalPoints) usedBytes = try container.decode(Int.self, forKey: .usedBytes) totalBytes = try container.decode(Int.self, forKey: .totalBytes) - titleRankings = try container.decode([String].self, forKey: .titleRankings) + titleRankings = try container.decode([TitleRanking].self, forKey: .titleRankings) if let medalInfos = try? container.decode([MedalInfo].self, forKey: .medalInfos) { self.medalInfos = medalInfos