From fc58ccf091958cf20aef93301bbeba8629c67071 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sun, 17 Mar 2024 23:03:05 +0100 Subject: [PATCH] Implemented the "init(from: )" initialiser and the "encode(to: )" function of the Codable protocol for the Review+Codable extension in the iTunes library. --- ...w+Decodable.swift => Review+Codable.swift} | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) rename Libraries/iTunes/Kit/Models/{Review+Decodable.swift => Review+Codable.swift} (59%) diff --git a/Libraries/iTunes/Kit/Models/Review+Decodable.swift b/Libraries/iTunes/Kit/Models/Review+Codable.swift similarity index 59% rename from Libraries/iTunes/Kit/Models/Review+Decodable.swift rename to Libraries/iTunes/Kit/Models/Review+Codable.swift index 41269fe..c60640a 100644 --- a/Libraries/iTunes/Kit/Models/Review+Decodable.swift +++ b/Libraries/iTunes/Kit/Models/Review+Codable.swift @@ -1,5 +1,5 @@ // -// Review.swift +// Review+Codable.swift // ReviewsiTunesKit // // Created by Javier Cicchelli on 17/03/2024. @@ -9,6 +9,7 @@ import Foundation import ReviewsFeedKit +// MARK: - Decodable extension Review: Decodable { // MARK: Enumerations @@ -54,3 +55,30 @@ extension Review: Decodable { } } + +// MARK: - Encodable +extension Review: Encodable { + + // MARK: Functions + + public func encode(to encoder: any Encoder) throws { + var review = encoder.container(keyedBy: ReviewKeys.self) + var authorName = review.nestedContainer(keyedBy: NameKeys.self, forKey: .author) + var authorLabel = authorName.nestedContainer(keyedBy: LabelKeys.self, forKey: .name) + var contentLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .content) + var idLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .id) + var ratingLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .rating) + var titleLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .title) + var versionLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .version) + var updatedLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .updated) + + try authorLabel.encode(author, forKey: .label) + try contentLabel.encode(content, forKey: .label) + try idLabel.encode(String(id), forKey: .label) + try ratingLabel.encode(String(rating), forKey: .label) + try titleLabel.encode(title, forKey: .label) + try versionLabel.encode(version, forKey: .label) + try updatedLabel.encode(updated, forKey: .label) + } + +}