@@ -186,6 +186,114 @@ public class RemoteBlogSettings: NSObject {
186
186
///
187
187
@objc public var sharingDisabledReblogs : NSNumber ?
188
188
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
+
189
297
// MARK: - Helpers
190
298
191
299
/// Computed property, meant to help conversion from Remote / String-Based values, into their Integer counterparts
0 commit comments