diff --git a/Common/Models/People/TraktCastMember.swift b/Common/Models/People/TraktCastMember.swift index 376962f..c5a0e7f 100644 --- a/Common/Models/People/TraktCastMember.swift +++ b/Common/Models/People/TraktCastMember.swift @@ -13,7 +13,7 @@ public struct TVCastMember: Codable, Hashable { public let characters: [String] @available(*, deprecated, renamed: "characters") public let character: String - public let episodeCount: Int + public let episodeCount: Int? public let person: Person enum CodingKeys: String, CodingKey { diff --git a/Common/Models/People/TraktCrewMember.swift b/Common/Models/People/TraktCrewMember.swift index 46e2874..9bc29ee 100644 --- a/Common/Models/People/TraktCrewMember.swift +++ b/Common/Models/People/TraktCrewMember.swift @@ -10,10 +10,10 @@ import Foundation /// Cast member for (show/season/episode)/people API public struct TVCrewMember: Codable, Hashable { - public let jobs: [String] + public let jobs: [String]? @available(*, deprecated, renamed: "jobs") - public let job: String - public let episodeCount: Int + public let job: String? + public let episodeCount: Int? public let person: Person enum CodingKeys: String, CodingKey { @@ -26,9 +26,9 @@ public struct TVCrewMember: Codable, Hashable { /// Cast member for /movies/.../people API public struct MovieCrewMember: Codable, Hashable { - public let jobs: [String] + public let jobs: [String]? @available(*, deprecated, renamed: "jobs") - public let job: String + public let job: String? public let person: Person enum CodingKeys: String, CodingKey { @@ -40,10 +40,10 @@ public struct MovieCrewMember: Codable, Hashable { /// Cast member for /people/.../shows API public struct PeopleTVCrewMember: Codable, Hashable { - public let jobs: [String] + public let jobs: [String]? @available(*, deprecated, renamed: "jobs") - public let job: String - public let episodeCount: Int + public let job: String? + public let episodeCount: Int? public let show: TraktShow enum CodingKeys: String, CodingKey { @@ -57,9 +57,9 @@ public struct PeopleTVCrewMember: Codable, Hashable { /// Cast member for /people/.../movies API public struct PeopleMovieCrewMember: Codable, Hashable { - public let jobs: [String] + public let jobs: [String]? @available(*, deprecated, renamed: "jobs") - public let job: String + public let job: String? public let movie: TraktMovie enum CodingKeys: String, CodingKey { diff --git a/Common/Models/Shows/TraktEpisode.swift b/Common/Models/Shows/TraktEpisode.swift index 55642cf..b2ea5a7 100644 --- a/Common/Models/Shows/TraktEpisode.swift +++ b/Common/Models/Shows/TraktEpisode.swift @@ -23,6 +23,8 @@ public struct TraktEpisode: Codable, Hashable { public let firstAired: Date? public let updatedAt: Date? public let availableTranslations: [String]? + public let translations: [TraktShowTranslation]? + public let runtime: Int? enum CodingKeys: String, CodingKey { case season @@ -36,5 +38,7 @@ public struct TraktEpisode: Codable, Hashable { case firstAired = "first_aired" case updatedAt = "updated_at" case availableTranslations = "available_translations" + case translations + case runtime } } diff --git a/Common/Models/Shows/TraktShowTranslation.swift b/Common/Models/Shows/TraktShowTranslation.swift index dc0af9e..6a53f49 100644 --- a/Common/Models/Shows/TraktShowTranslation.swift +++ b/Common/Models/Shows/TraktShowTranslation.swift @@ -10,6 +10,6 @@ import Foundation public struct TraktShowTranslation: Codable, Hashable { public let title: String? - public let overview: String - public let language: String + public let overview: String? + public let language: String? } diff --git a/Common/Wrapper/Seasons.swift b/Common/Wrapper/Seasons.swift index 4f266c7..6224407 100644 --- a/Common/Wrapper/Seasons.swift +++ b/Common/Wrapper/Seasons.swift @@ -21,9 +21,13 @@ extension TraktManager { */ @discardableResult - public func getSeasons(showID id: T, extended: [ExtendedType] = [.Min], completion: @escaping SeasonsCompletionHandler) -> URLSessionDataTaskProtocol? { + public func getSeasons(showID id: T, extended: [ExtendedType] = [.Min], translatedInto language: String? = nil, completion: @escaping SeasonsCompletionHandler) -> URLSessionDataTaskProtocol? { + + var query = ["extended": extended.queryString()] + query["translations"] = language + guard var request = mutableRequest(forPath: "shows/\(id)/seasons", - withQuery: ["extended": extended.queryString()], + withQuery: query, isAuthorized: false, withHTTPMethod: .GET) else { return nil } request.cachePolicy = .reloadIgnoringCacheData