From 910fc0b612ff90d3edaad8c75eb2f4a7f4e5209d Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sun, 17 Mar 2024 16:48:59 +0100 Subject: [PATCH] Implemented the Feed model in the iTunes library. --- Libraries/iTunes/Kit/Models/Feed.swift | 38 +++++++++++++++++++ .../Review+Decodable.swift | 0 2 files changed, 38 insertions(+) create mode 100644 Libraries/iTunes/Kit/Models/Feed.swift rename Libraries/iTunes/Kit/{Conformances => Models}/Review+Decodable.swift (100%) diff --git a/Libraries/iTunes/Kit/Models/Feed.swift b/Libraries/iTunes/Kit/Models/Feed.swift new file mode 100644 index 0000000..4928aef --- /dev/null +++ b/Libraries/iTunes/Kit/Models/Feed.swift @@ -0,0 +1,38 @@ +// +// Feed.swift +// ReviewsiTunesKit +// +// Created by Javier Cicchelli on 17/03/2024. +// Copyright © 2024 Röck+Cöde VoF. All rights reserved. +// + +import ReviewsFeedKit + +struct Feed { + + // MARK: Constants + let entries: [Review] + +} + +// MARK: - Decodable +extension Feed: Decodable { + + // MARK: Enumerations + enum FeedKeys: String, CodingKey { + case feed + } + + enum EntryKeys: String, CodingKey { + case entry + } + + // MARK: Initialisers + init(from decoder: any Decoder) throws { + let feed = try decoder.container(keyedBy: FeedKeys.self) + let feedEntry = try feed.nestedContainer(keyedBy: EntryKeys.self, forKey: .feed) + + self.entries = try feedEntry.decode([Review].self, forKey: .entry) + } + +} diff --git a/Libraries/iTunes/Kit/Conformances/Review+Decodable.swift b/Libraries/iTunes/Kit/Models/Review+Decodable.swift similarity index 100% rename from Libraries/iTunes/Kit/Conformances/Review+Decodable.swift rename to Libraries/iTunes/Kit/Models/Review+Decodable.swift