@@ -63,15 +63,16 @@ public class SubscribersServiceRemote: ServiceRemoteWordPressComREST {
6363 public let isEmailSubscriptionEnabled : Bool
6464 public let subscriptionStatus : String ?
6565
66- private enum CodingKeys : String , CodingKey {
67- case subscriberID = " subscription_id "
68- case dotComUserID = " user_id "
69- case displayName = " display_name "
70- case emailAddress = " email_address "
71- case avatar
72- case dateSubscribed = " date_subscribed "
73- case isEmailSubscriptionEnabled = " is_email_subscriber "
74- case subscriptionStatus = " subscription_status "
66+ public init ( from decoder: any Decoder ) throws {
67+ let container = try decoder. container ( keyedBy: StringCodingKey . self)
68+ subscriberID = try container. decode ( Int . self, forKey: " subscription_id " )
69+ dotComUserID = try container. decode ( Int . self, forKey: " user_id " )
70+ displayName = try ? container. decodeIfPresent ( String . self, forKey: " display_name " )
71+ avatar = try ? container. decodeIfPresent ( String . self, forKey: " avatar " )
72+ emailAddress = try ? container. decodeIfPresent ( String . self, forKey: " email_address " )
73+ dateSubscribed = try container. decode ( Date . self, forKey: " date_subscribed " )
74+ isEmailSubscriptionEnabled = try container. decode ( Bool . self, forKey: " is_email_subscriber " )
75+ subscriptionStatus = try ? container. decodeIfPresent ( String . self, forKey: " subscription_status " )
7576 }
7677 }
7778 }
@@ -129,7 +130,7 @@ public class SubscribersServiceRemote: ServiceRemoteWordPressComREST {
129130 var dateSubscribed : Date { get }
130131 }
131132
132- public struct GetSubscriberDetailsResponse : Decodable , SubsciberBasicInfoResponse {
133+ public final class GetSubscriberDetailsResponse : Decodable , SubsciberBasicInfoResponse {
133134 public let subscriberID : Int
134135 public let dotComUserID : Int
135136 public let displayName : String ?
@@ -140,7 +141,7 @@ public class SubscribersServiceRemote: ServiceRemoteWordPressComREST {
140141 public let isEmailSubscriptionEnabled : Bool
141142 public let subscriptionStatus : String ?
142143 public let country : Country ?
143- public var plans : [ Plan ] ?
144+ public let plans : [ Plan ] ?
144145
145146 public struct Country : Decodable {
146147 public var code : String ?
@@ -160,33 +161,35 @@ public class SubscribersServiceRemote: ServiceRemoteWordPressComREST {
160161 public let startDate : Date
161162 public let endDate : Date
162163
163- enum CodingKeys : String , CodingKey {
164- case isGift = " is_gift "
165- case giftId = " gift_id "
166- case paidSubscriptionId = " paid_subscription_id "
167- case status
168- case title
169- case currency
170- case renewInterval = " renew_interval "
171- case inactiveRenewInterval = " inactive_renew_interval "
172- case renewalPrice = " renewal_price "
173- case startDate = " start_date "
174- case endDate = " end_date "
164+ public init ( from decoder: Decoder ) throws {
165+ let container = try decoder. container ( keyedBy: StringCodingKey . self)
166+ isGift = try container. decode ( Bool . self, forKey: " is_gift " )
167+ giftId = try container. decodeIfPresent ( Int . self, forKey: " gift_id " )
168+ paidSubscriptionId = try container. decodeIfPresent ( String . self, forKey: " paid_subscription_id " )
169+ status = try container. decode ( String . self, forKey: " status " )
170+ title = try container. decode ( String . self, forKey: " title " )
171+ currency = try container. decodeIfPresent ( String . self, forKey: " currency " )
172+ renewInterval = try ? container. decodeIfPresent ( String . self, forKey: " renew_interval " )
173+ inactiveRenewInterval = try ? container. decodeIfPresent ( String . self, forKey: " inactive_renew_interval " )
174+ renewalPrice = try container. decode ( Decimal . self, forKey: " renewal_price " )
175+ startDate = try container. decode ( Date . self, forKey: " start_date " )
176+ endDate = try container. decode ( Date . self, forKey: " end_date " )
175177 }
176178 }
177179
178- private enum CodingKeys : String , CodingKey {
179- case subscriberID = " subscription_id "
180- case dotComUserID = " user_id "
181- case displayName = " display_name "
182- case emailAddress = " email_address "
183- case avatar
184- case siteURL = " url "
185- case dateSubscribed = " date_subscribed "
186- case isEmailSubscriptionEnabled = " is_email_subscriber "
187- case subscriptionStatus = " subscription_status "
188- case country
189- case plans
180+ public init ( from decoder: any Decoder ) throws {
181+ let container = try decoder. container ( keyedBy: StringCodingKey . self)
182+ subscriberID = try container. decode ( Int . self, forKey: " subscription_id " )
183+ dotComUserID = try container. decode ( Int . self, forKey: " user_id " )
184+ displayName = try ? container. decodeIfPresent ( String . self, forKey: " display_name " )
185+ avatar = try ? container. decodeIfPresent ( String . self, forKey: " avatar " )
186+ emailAddress = try ? container. decodeIfPresent ( String . self, forKey: " email_address " )
187+ siteURL = try ? container. decodeIfPresent ( String . self, forKey: " url " )
188+ dateSubscribed = try container. decode ( Date . self, forKey: " date_subscribed " )
189+ isEmailSubscriptionEnabled = try container. decode ( Bool . self, forKey: " is_email_subscriber " )
190+ subscriptionStatus = try ? container. decodeIfPresent ( String . self, forKey: " subscription_status " )
191+ country = try ? container. decodeIfPresent ( Country . self, forKey: " country " )
192+ plans = try container. decodeIfPresent ( [ Plan ] . self, forKey: " plans " )
190193 }
191194 }
192195
@@ -241,12 +244,6 @@ public class SubscribersServiceRemote: ServiceRemoteWordPressComREST {
241244 type: GetSubscriberStatsResponse . self
242245 ) . get ( ) . body
243246 }
244-
245- // MARK: POST Delete Subscriber
246-
247- public func deleteSubscriber( ) {
248-
249- }
250247}
251248
252249extension SubscribersServiceRemote . SubsciberBasicInfoResponse {
0 commit comments