@@ -151,9 +151,9 @@ extension RemotePostCreateParameters {
151151 }
152152}
153153
154- // MARK: - Encoding
154+ // MARK: - Encoding (WP.COM REST API)
155155
156- private enum RemotePostCodingKeys : String , CodingKey {
156+ private enum RemotePostWordPressComCodingKeys : String , CodingKey {
157157 case ifNotModifiedSince = " if_not_modified_since "
158158 case status
159159 case date
@@ -177,7 +177,7 @@ struct RemotePostCreateParametersWordPressComEncoder: Encodable {
177177 let parameters : RemotePostCreateParameters
178178
179179 func encode( to encoder: Encoder ) throws {
180- var container = encoder. container ( keyedBy: RemotePostCodingKeys . self)
180+ var container = encoder. container ( keyedBy: RemotePostWordPressComCodingKeys . self)
181181 try container. encodeIfPresent ( parameters. status, forKey: . status)
182182 try container. encodeIfPresent ( parameters. date, forKey: . date)
183183 try container. encodeIfPresent ( parameters. authorID, forKey: . authorID)
@@ -196,7 +196,7 @@ struct RemotePostCreateParametersWordPressComEncoder: Encodable {
196196 // Posts
197197 try container. encodeIfPresent ( parameters. format, forKey: . format)
198198 if !parameters. tags. isEmpty {
199- try container. encode ( [ RemotePostCodingKeys . postTags: parameters. tags] , forKey: . terms)
199+ try container. encode ( [ RemotePostWordPressComCodingKeys . postTags: parameters. tags] , forKey: . terms)
200200 }
201201 if !parameters. categoryIDs. isEmpty {
202202 try container. encodeIfPresent ( parameters. categoryIDs, forKey: . categoryIDs)
@@ -211,7 +211,7 @@ struct RemotePostUpdateParametersWordPressComEncoder: Encodable {
211211 let parameters : RemotePostUpdateParameters
212212
213213 func encode( to encoder: Encoder ) throws {
214- var container = encoder. container ( keyedBy: RemotePostCodingKeys . self)
214+ var container = encoder. container ( keyedBy: RemotePostWordPressComCodingKeys . self)
215215 try container. encodeIfPresent ( parameters. ifNotModifiedSince, forKey: . ifNotModifiedSince)
216216
217217 try container. encodeIfPresent ( parameters. status, forKey: . status)
@@ -232,7 +232,111 @@ struct RemotePostUpdateParametersWordPressComEncoder: Encodable {
232232 // Posts
233233 try container. encodeIfPresent ( parameters. format, forKey: . format)
234234 if let tags = parameters. tags {
235- try container. encode ( [ RemotePostCodingKeys . postTags: tags] , forKey: . terms)
235+ try container. encode ( [ RemotePostWordPressComCodingKeys . postTags: tags] , forKey: . terms)
236+ }
237+ try container. encodeIfPresent ( parameters. categoryIDs, forKey: . categoryIDs)
238+ try container. encodeIfPresent ( parameters. isSticky, forKey: . isSticky)
239+ }
240+ }
241+
242+ // MARK: - Encoding (XML-RPC)
243+
244+ private enum RemotePostXMLRPCCodingKeys : String , CodingKey {
245+ case ifNotModifiedSince = " if_not_modified_since "
246+ case postStatus = " post_status "
247+ case pageStatus = " page_status "
248+ case date = " date_created_gmt "
249+ case authorID = " wp_author_id "
250+ case title
251+ case content = " description "
252+ case password = " wp_password "
253+ case excerpt = " mt_excerpt "
254+ case slug = " wp_slug "
255+ case featuredImageID = " wp_post_thumbnail "
256+ case parentPageID = " wp_page_parent_id "
257+ case tags = " mt_keywords "
258+ case format = " wp_post_format "
259+ case isSticky = " sticky "
260+ case categoryIDs = " categories "
261+
262+ static let postTags = " post_tag "
263+ }
264+
265+ enum RemotePostEncodingPostType {
266+ case post, page
267+ }
268+
269+ struct RemotePostCreateParametersXMLRPCEncoder : Encodable {
270+ let parameters : RemotePostCreateParameters
271+ let type : RemotePostEncodingPostType
272+
273+ func encode( to encoder: Encoder ) throws {
274+ var container = encoder. container ( keyedBy: RemotePostXMLRPCCodingKeys . self)
275+ switch type {
276+ case . post:
277+ try container. encodeIfPresent ( parameters. status, forKey: . postStatus)
278+ case . page:
279+ try container. encodeIfPresent ( parameters. status, forKey: . pageStatus)
280+ }
281+ try container. encodeIfPresent ( parameters. date, forKey: . date)
282+ try container. encodeIfPresent ( parameters. authorID, forKey: . authorID)
283+ try container. encodeIfPresent ( parameters. title, forKey: . title)
284+ try container. encodeIfPresent ( parameters. content, forKey: . content)
285+ try container. encodeIfPresent ( parameters. password, forKey: . password)
286+ try container. encodeIfPresent ( parameters. excerpt, forKey: . excerpt)
287+ try container. encodeIfPresent ( parameters. slug, forKey: . slug)
288+ try container. encodeIfPresent ( parameters. featuredImageID, forKey: . featuredImageID)
289+
290+ // Pages
291+ if let parentPageID = parameters. parentPageID {
292+ try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
293+ }
294+
295+ // Posts
296+ try container. encodeIfPresent ( parameters. format, forKey: . format)
297+ if !parameters. tags. isEmpty {
298+ try container. encode ( parameters. tags, forKey: . tags)
299+ }
300+ if !parameters. categoryIDs. isEmpty {
301+ try container. encodeIfPresent ( parameters. categoryIDs, forKey: . categoryIDs)
302+ }
303+ if parameters. isSticky {
304+ try container. encode ( parameters. isSticky, forKey: . isSticky)
305+ }
306+ }
307+ }
308+
309+ struct RemotePostUpdateParametersXMLRPCEncoder : Encodable {
310+ let parameters : RemotePostUpdateParameters
311+ let type : RemotePostEncodingPostType
312+
313+ func encode( to encoder: Encoder ) throws {
314+ var container = encoder. container ( keyedBy: RemotePostXMLRPCCodingKeys . self)
315+ try container. encodeIfPresent ( parameters. ifNotModifiedSince, forKey: . ifNotModifiedSince)
316+ switch type {
317+ case . post:
318+ try container. encodeIfPresent ( parameters. status, forKey: . postStatus)
319+ case . page:
320+ try container. encodeIfPresent ( parameters. status, forKey: . pageStatus)
321+ }
322+ try container. encodeIfPresent ( parameters. date, forKey: . date)
323+ try container. encodeIfPresent ( parameters. authorID, forKey: . authorID)
324+ try container. encodeIfPresent ( parameters. title, forKey: . title)
325+ try container. encodeIfPresent ( parameters. content, forKey: . content)
326+ try container. encodeIfPresent ( parameters. password, forKey: . password)
327+ try container. encodeIfPresent ( parameters. excerpt, forKey: . excerpt)
328+ try container. encodeIfPresent ( parameters. slug, forKey: . slug)
329+ try container. encodeIfPresent ( parameters. featuredImageID, forKey: . featuredImageID)
330+
331+ // Pages
332+ if let parentPageID = parameters. parentPageID {
333+ try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
334+ }
335+
336+ // Posts
337+ try container. encodeIfPresent ( parameters. format, forKey: . format)
338+ if let tags = parameters. tags {
339+ try container. encode ( tags, forKey: . tags)
236340 }
237341 try container. encodeIfPresent ( parameters. categoryIDs, forKey: . categoryIDs)
238342 try container. encodeIfPresent ( parameters. isSticky, forKey: . isSticky)
0 commit comments