@@ -186,6 +186,114 @@ public class RemoteBlogSettings: NSObject {
186186 ///
187187 @objc public var sharingDisabledReblogs : NSNumber ?
188188
189+ // Defined as CodingKey-conforming already to simplify Codable support in the future.
190+ enum CodingKeys : String , CodingKey {
191+ case name = " name "
192+ case tagline = " description "
193+ case privacy = " blog_public "
194+ case languageID = " lang_id "
195+ case iconMediaID = " site_icon "
196+ case gmtOffset = " gmt_offset "
197+ case timezoneString = " timezone_string "
198+ case settings = " settings "
199+ case defaultCategory = " default_category "
200+ case defaultPostFormat = " default_post_format "
201+ case dateFormat = " date_format "
202+ case timeFormat = " time_format "
203+ case startOfWeek = " start_of_week "
204+ case postsPerPage = " posts_per_page "
205+ case commentsAllowed = " default_comment_status "
206+ case commentsBlocklistKeys = " blacklist_keys "
207+ case commentsCloseAutomatically = " close_comments_for_old_posts "
208+ case commentsCloseAutomaticallyAfterDays = " close_comments_days_old "
209+ case commentsKnownUsersAllowlist = " comment_whitelist "
210+ case commentsMaxLinks = " comment_max_links "
211+ case commentsModerationKeys = " moderation_keys "
212+ case commentsPagingEnabled = " page_comments "
213+ case commentsPageSize = " comments_per_page "
214+ case commentsRequireModeration = " comment_moderation "
215+ case commentsRequireNameAndEmail = " require_name_email "
216+ case commentsRequireRegistration = " comment_registration "
217+ case commentsSortOrder = " comment_order "
218+ case commentsThreadingEnabled = " thread_comments "
219+ case commentsThreadingDepth = " thread_comments_depth "
220+ case pingbackOutbound = " default_pingback_flag "
221+ case pingbackInbound = " default_ping_status "
222+ case relatedPostsAllowed = " jetpack_relatedposts_allowed "
223+ case relatedPostsEnabled = " jetpack_relatedposts_enabled "
224+ case relatedPostsShowHeadline = " jetpack_relatedposts_show_headline "
225+ case relatedPostsShowThumbnails = " jetpack_relatedposts_show_thumbnails "
226+ case ampSupported = " amp_is_supported "
227+ case ampEnabled = " amp_is_enabled "
228+
229+ case sharingButtonStyle = " sharing_button_style "
230+ case sharingLabel = " sharing_label "
231+ case sharingTwitterName = " twitter_via "
232+ case sharingCommentLikesEnabled = " jetpack_comment_likes_enabled "
233+ case sharingDisabledLikes = " disabled_likes "
234+ case sharingDisabledReblogs = " disabled_reblogs "
235+ }
236+
237+ /// Parses details from a JSON dictionary, as returned by the WordPress.com REST API.
238+ @objc
239+ public init ( jsonDictionary json: NSDictionary ) {
240+ let rawSettings = json. object ( forKey: CodingKeys . settings. rawValue) as? NSDictionary ?? [ : ]
241+
242+ name = json. string ( forKey: CodingKeys . name. rawValue)
243+ tagline = json. string ( forKey: CodingKeys . tagline. rawValue)
244+ privacy = rawSettings. number ( forKey: CodingKeys . privacy. rawValue)
245+ languageID = rawSettings. number ( forKey: CodingKeys . languageID. rawValue)
246+ iconMediaID = rawSettings. number ( forKey: CodingKeys . iconMediaID. rawValue)
247+ gmtOffset = rawSettings. number ( forKey: CodingKeys . gmtOffset. rawValue)
248+ timezoneString = rawSettings. string ( forKey: CodingKeys . timezoneString. rawValue)
249+
250+ defaultCategoryID = rawSettings. number ( forKey: CodingKeys . defaultCategory. rawValue) ?? 1
251+ let defaultPostFormatValue = rawSettings. object ( forKey: CodingKeys . defaultPostFormat. rawValue)
252+ if let defaultPostFormatNumber = defaultPostFormatValue as? NSNumber , defaultPostFormatNumber == 0 ||
253+ defaultPostFormatValue as? String == " 0 " {
254+ defaultPostFormat = " standard "
255+ } else {
256+ defaultPostFormat = rawSettings. string ( forKey: CodingKeys . defaultPostFormat. rawValue)
257+ }
258+ dateFormat = rawSettings. string ( forKey: CodingKeys . dateFormat. rawValue)
259+ timeFormat = rawSettings. string ( forKey: CodingKeys . timeFormat. rawValue)
260+ startOfWeek = rawSettings. string ( forKey: CodingKeys . startOfWeek. rawValue)
261+ postsPerPage = rawSettings. number ( forKey: CodingKeys . postsPerPage. rawValue)
262+
263+ commentsAllowed = rawSettings. number ( forKey: CodingKeys . commentsAllowed. rawValue)
264+ commentsBlocklistKeys = rawSettings. string ( forKey: CodingKeys . commentsBlocklistKeys. rawValue)
265+ commentsCloseAutomatically = rawSettings. number ( forKey: CodingKeys . commentsCloseAutomatically. rawValue)
266+ commentsCloseAutomaticallyAfterDays = rawSettings. number ( forKey: CodingKeys . commentsCloseAutomaticallyAfterDays. rawValue)
267+ commentsFromKnownUsersAllowlisted = rawSettings. number ( forKey: CodingKeys . commentsKnownUsersAllowlist. rawValue)
268+ commentsMaximumLinks = rawSettings. number ( forKey: CodingKeys . commentsMaxLinks. rawValue)
269+ commentsModerationKeys = rawSettings. string ( forKey: CodingKeys . commentsModerationKeys. rawValue)
270+ commentsPagingEnabled = rawSettings. number ( forKey: CodingKeys . commentsPagingEnabled. rawValue)
271+ commentsPageSize = rawSettings. number ( forKey: CodingKeys . commentsPageSize. rawValue)
272+ commentsRequireManualModeration = rawSettings. number ( forKey: CodingKeys . commentsRequireModeration. rawValue)
273+ commentsRequireNameAndEmail = rawSettings. number ( forKey: CodingKeys . commentsRequireNameAndEmail. rawValue)
274+ commentsRequireRegistration = rawSettings. number ( forKey: CodingKeys . commentsRequireRegistration. rawValue)
275+ commentsSortOrder = rawSettings. string ( forKey: CodingKeys . commentsSortOrder. rawValue)
276+ commentsThreadingEnabled = rawSettings. number ( forKey: CodingKeys . commentsThreadingEnabled. rawValue)
277+ commentsThreadingDepth = rawSettings. number ( forKey: CodingKeys . commentsThreadingDepth. rawValue)
278+ pingbackOutboundEnabled = rawSettings. number ( forKey: CodingKeys . pingbackOutbound. rawValue)
279+ pingbackInboundEnabled = rawSettings. number ( forKey: CodingKeys . pingbackInbound. rawValue)
280+
281+ relatedPostsAllowed = rawSettings. number ( forKey: CodingKeys . relatedPostsAllowed. rawValue)
282+ relatedPostsEnabled = rawSettings. number ( forKey: CodingKeys . relatedPostsEnabled. rawValue)
283+ relatedPostsShowHeadline = rawSettings. number ( forKey: CodingKeys . relatedPostsShowHeadline. rawValue)
284+ relatedPostsShowThumbnails = rawSettings. number ( forKey: CodingKeys . relatedPostsShowThumbnails. rawValue)
285+
286+ ampSupported = rawSettings. number ( forKey: CodingKeys . ampSupported. rawValue)
287+ ampEnabled = rawSettings. number ( forKey: CodingKeys . ampEnabled. rawValue)
288+
289+ sharingButtonStyle = rawSettings. string ( forKey: CodingKeys . sharingButtonStyle. rawValue)
290+ sharingLabel = rawSettings. string ( forKey: CodingKeys . sharingLabel. rawValue)
291+ sharingTwitterName = rawSettings. string ( forKey: CodingKeys . sharingTwitterName. rawValue)
292+ sharingCommentLikesEnabled = rawSettings. number ( forKey: CodingKeys . sharingCommentLikesEnabled. rawValue)
293+ sharingDisabledLikes = rawSettings. number ( forKey: CodingKeys . sharingDisabledLikes. rawValue)
294+ sharingDisabledReblogs = rawSettings. number ( forKey: CodingKeys . sharingDisabledReblogs. rawValue)
295+ }
296+
189297 // MARK: - Helpers
190298
191299 /// Computed property, meant to help conversion from Remote / String-Based values, into their Integer counterparts
0 commit comments