/* Options: Date: 2024-11-21 04:53:43 SwiftVersion: 5.0 Version: 6.00 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://resourcelibrary.api.ashcompanies.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: ResourceItemsRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/resourceItems", "GET,POST") public class ResourceItemsRequest : BasicResourceLibraryRequest, IReturn { public typealias Return = ResourceItemsResponse public var includeCompletionStatus:Bool? public var includeContent:Bool? public var isFavorite:Bool? public var isDigitalWorkoutFeatured:Bool? public var multipleDWFeaturedResources:Bool? public var workoutCategoryId:String? public var resourceItemIds:[String] = [] /** * Set it to true if requesting resources only from digital library */ // @ApiMember(Description="Set it to true if requesting resources only from digital library") public var digitalFitness:Bool? /** * Set it to true if requesting resources only from health library */ // @ApiMember(Description="Set it to true if requesting resources only from health library") public var healthLibrary:Bool? public var limit:String? public var offset:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case includeCompletionStatus case includeContent case isFavorite case isDigitalWorkoutFeatured case multipleDWFeaturedResources case workoutCategoryId case resourceItemIds case digitalFitness case healthLibrary case limit case offset } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) includeCompletionStatus = try container.decodeIfPresent(Bool.self, forKey: .includeCompletionStatus) includeContent = try container.decodeIfPresent(Bool.self, forKey: .includeContent) isFavorite = try container.decodeIfPresent(Bool.self, forKey: .isFavorite) isDigitalWorkoutFeatured = try container.decodeIfPresent(Bool.self, forKey: .isDigitalWorkoutFeatured) multipleDWFeaturedResources = try container.decodeIfPresent(Bool.self, forKey: .multipleDWFeaturedResources) workoutCategoryId = try container.decodeIfPresent(String.self, forKey: .workoutCategoryId) resourceItemIds = try container.decodeIfPresent([String].self, forKey: .resourceItemIds) ?? [] digitalFitness = try container.decodeIfPresent(Bool.self, forKey: .digitalFitness) healthLibrary = try container.decodeIfPresent(Bool.self, forKey: .healthLibrary) limit = try container.decodeIfPresent(String.self, forKey: .limit) offset = try container.decodeIfPresent(String.self, forKey: .offset) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if includeCompletionStatus != nil { try container.encode(includeCompletionStatus, forKey: .includeCompletionStatus) } if includeContent != nil { try container.encode(includeContent, forKey: .includeContent) } if isFavorite != nil { try container.encode(isFavorite, forKey: .isFavorite) } if isDigitalWorkoutFeatured != nil { try container.encode(isDigitalWorkoutFeatured, forKey: .isDigitalWorkoutFeatured) } if multipleDWFeaturedResources != nil { try container.encode(multipleDWFeaturedResources, forKey: .multipleDWFeaturedResources) } if workoutCategoryId != nil { try container.encode(workoutCategoryId, forKey: .workoutCategoryId) } if resourceItemIds.count > 0 { try container.encode(resourceItemIds, forKey: .resourceItemIds) } if digitalFitness != nil { try container.encode(digitalFitness, forKey: .digitalFitness) } if healthLibrary != nil { try container.encode(healthLibrary, forKey: .healthLibrary) } if limit != nil { try container.encode(limit, forKey: .limit) } if offset != nil { try container.encode(offset, forKey: .offset) } } } public class ResourceItemsResponse : IResourceItemsLiteResponse, Codable { public var resourceItems:[ResourceItem] = [] required public init(){} } public class BasicResourceLibraryRequest : Codable { public var resourceLibraryMemberId:Int? required public init(){} } public class ResourceItem : ResourceCard { public var content:String? public var credit:String? public var references:String? public var disclaimer:String? public var headerImage:String? public var origin:String? public var originId:String? public var tags:[Tag] = [] public var categories:[Category] = [] public var index:Int? public var activityLevel:String? public var activityDetails:String? public var transcript:String? public var isArchived:Bool? public var activities:[ActivityItem] = [] public var seriesItems:[SeriesItem] = [] public var videoId:String? public var focus:String? public var series:String? public var seriesUrl:String? public var category:String? public var equipments:[String] = [] public var durationRange:String? public var providerName:String? public var uploadDate:String? public var completionDate:Date? public var level:String? public var bodyFocus:String? public var altMediaPaths:AltMediaPaths? public var subtitles:String? public var drmEncrypted:Bool? public var screenshots:[ScreenshotItem] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case content case credit case references case disclaimer case headerImage case origin case originId case tags case categories case index case activityLevel case activityDetails case transcript case isArchived case activities case seriesItems case videoId case focus case series case seriesUrl case category case equipments case durationRange case providerName case uploadDate case completionDate case level case bodyFocus case altMediaPaths case subtitles case drmEncrypted case screenshots } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) content = try container.decodeIfPresent(String.self, forKey: .content) credit = try container.decodeIfPresent(String.self, forKey: .credit) references = try container.decodeIfPresent(String.self, forKey: .references) disclaimer = try container.decodeIfPresent(String.self, forKey: .disclaimer) headerImage = try container.decodeIfPresent(String.self, forKey: .headerImage) origin = try container.decodeIfPresent(String.self, forKey: .origin) originId = try container.decodeIfPresent(String.self, forKey: .originId) tags = try container.decodeIfPresent([Tag].self, forKey: .tags) ?? [] categories = try container.decodeIfPresent([Category].self, forKey: .categories) ?? [] index = try container.decodeIfPresent(Int.self, forKey: .index) activityLevel = try container.decodeIfPresent(String.self, forKey: .activityLevel) activityDetails = try container.decodeIfPresent(String.self, forKey: .activityDetails) transcript = try container.decodeIfPresent(String.self, forKey: .transcript) isArchived = try container.decodeIfPresent(Bool.self, forKey: .isArchived) activities = try container.decodeIfPresent([ActivityItem].self, forKey: .activities) ?? [] seriesItems = try container.decodeIfPresent([SeriesItem].self, forKey: .seriesItems) ?? [] videoId = try container.decodeIfPresent(String.self, forKey: .videoId) focus = try container.decodeIfPresent(String.self, forKey: .focus) series = try container.decodeIfPresent(String.self, forKey: .series) seriesUrl = try container.decodeIfPresent(String.self, forKey: .seriesUrl) category = try container.decodeIfPresent(String.self, forKey: .category) equipments = try container.decodeIfPresent([String].self, forKey: .equipments) ?? [] durationRange = try container.decodeIfPresent(String.self, forKey: .durationRange) providerName = try container.decodeIfPresent(String.self, forKey: .providerName) uploadDate = try container.decodeIfPresent(String.self, forKey: .uploadDate) completionDate = try container.decodeIfPresent(Date.self, forKey: .completionDate) level = try container.decodeIfPresent(String.self, forKey: .level) bodyFocus = try container.decodeIfPresent(String.self, forKey: .bodyFocus) altMediaPaths = try container.decodeIfPresent(AltMediaPaths.self, forKey: .altMediaPaths) subtitles = try container.decodeIfPresent(String.self, forKey: .subtitles) drmEncrypted = try container.decodeIfPresent(Bool.self, forKey: .drmEncrypted) screenshots = try container.decodeIfPresent([ScreenshotItem].self, forKey: .screenshots) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if content != nil { try container.encode(content, forKey: .content) } if credit != nil { try container.encode(credit, forKey: .credit) } if references != nil { try container.encode(references, forKey: .references) } if disclaimer != nil { try container.encode(disclaimer, forKey: .disclaimer) } if headerImage != nil { try container.encode(headerImage, forKey: .headerImage) } if origin != nil { try container.encode(origin, forKey: .origin) } if originId != nil { try container.encode(originId, forKey: .originId) } if tags.count > 0 { try container.encode(tags, forKey: .tags) } if categories.count > 0 { try container.encode(categories, forKey: .categories) } if index != nil { try container.encode(index, forKey: .index) } if activityLevel != nil { try container.encode(activityLevel, forKey: .activityLevel) } if activityDetails != nil { try container.encode(activityDetails, forKey: .activityDetails) } if transcript != nil { try container.encode(transcript, forKey: .transcript) } if isArchived != nil { try container.encode(isArchived, forKey: .isArchived) } if activities.count > 0 { try container.encode(activities, forKey: .activities) } if seriesItems.count > 0 { try container.encode(seriesItems, forKey: .seriesItems) } if videoId != nil { try container.encode(videoId, forKey: .videoId) } if focus != nil { try container.encode(focus, forKey: .focus) } if series != nil { try container.encode(series, forKey: .series) } if seriesUrl != nil { try container.encode(seriesUrl, forKey: .seriesUrl) } if category != nil { try container.encode(category, forKey: .category) } if equipments.count > 0 { try container.encode(equipments, forKey: .equipments) } if durationRange != nil { try container.encode(durationRange, forKey: .durationRange) } if providerName != nil { try container.encode(providerName, forKey: .providerName) } if uploadDate != nil { try container.encode(uploadDate, forKey: .uploadDate) } if completionDate != nil { try container.encode(completionDate, forKey: .completionDate) } if level != nil { try container.encode(level, forKey: .level) } if bodyFocus != nil { try container.encode(bodyFocus, forKey: .bodyFocus) } if altMediaPaths != nil { try container.encode(altMediaPaths, forKey: .altMediaPaths) } if subtitles != nil { try container.encode(subtitles, forKey: .subtitles) } if drmEncrypted != nil { try container.encode(drmEncrypted, forKey: .drmEncrypted) } if screenshots.count > 0 { try container.encode(screenshots, forKey: .screenshots) } } } public class Tag : Codable { public var id:String? public var title:String? required public init(){} } public class ResourceCard : Codable { public var id:String? public var title:String? public var Description:String? public var descriptionSummary:String? public var type:String? public var content:String? public var isComplete:Bool? public var isFavorite:Bool? public var isImplicitlyComplete:Bool? public var mediaPath:String? public var isConfirmable:Bool? public var isWcagCompliant:Bool? public var duration:String? public var preview:String? public var calories:Int? public var instructor:String? public var thumbnail:String? public var difficulty:String? public var tags:[Tag] = [] public var subtitles:String? public var screenshots:[ScreenshotItem] = [] public var drmEncrypted:Bool? required public init(){} } public protocol IResourceItemsLiteResponse { } public class ActivityItem : Codable { public var name:String? public var id:String? required public init(){} } public class SeriesItem : Codable { public var id:String? public var title:String? required public init(){} } public class AltMediaPaths : Codable { public var webm:String? public var ogv:String? public var mp4Low:String? public var mp4High:String? required public init(){} } public class ScreenshotItem : Codable { public var largeFilepathS3:String? public var thumbFilepathS3:String? public var order:Double? public var Description:String? required public init(){} } public class Category : Codable { public var id:String? public var subtopicItems:[SubTopic] = [] public var resourceItems:[ResourceItem] = [] public var title:String? public var isVisible:String? public var resourceCount:Int? required public init(){} }