[Library] iTunes library (#5)
This PR contains the work done to implement the `iTunesService` service that fetches the reviews from the **Apple App Store**. Reviewed-on: rock-n-code/app-reviews#5 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #5.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// 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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user