52 lines
1.1 KiB
Swift
52 lines
1.1 KiB
Swift
|
//
|
||
|
// 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)
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// MARK: - Encodable
|
||
|
extension Feed: Encodable {
|
||
|
|
||
|
// MARK: Functions
|
||
|
func encode(to encoder: any Encoder) throws {
|
||
|
var feed = encoder.container(keyedBy: FeedKeys.self)
|
||
|
var feedEntry = feed.nestedContainer(keyedBy: EntryKeys.self, forKey: .feed)
|
||
|
|
||
|
try feedEntry.encode(entries, forKey: .entry)
|
||
|
}
|
||
|
|
||
|
}
|