@@ -219,9 +219,7 @@ struct RemotePostCreateParametersWordPressComEncoder: Encodable {
219
219
}
220
220
221
221
// Pages
222
- if let parentPageID = parameters. parentPageID {
223
- try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
224
- }
222
+ try container. encodeIfPresent ( parameters. parentPageID, forKey: . parentPageID)
225
223
226
224
// Posts
227
225
try container. encodeIfPresent ( parameters. format, forKey: . format)
@@ -297,12 +295,7 @@ struct RemotePostUpdateParametersWordPressComEncoder: Encodable {
297
295
try container. encodeIfPresent ( parameters. excerpt, forKey: . excerpt)
298
296
try container. encodeIfPresent ( parameters. slug, forKey: . slug)
299
297
if let value = parameters. featuredImageID {
300
- if let featuredImageID = value {
301
- try container. encode ( featuredImageID, forKey: . featuredImageID)
302
- } else {
303
- // Passing `null` doesn't work.
304
- try container. encode ( " " , forKey: . featuredImageID)
305
- }
298
+ try container. encodeNullableID ( value, forKey: . featuredImageID)
306
299
}
307
300
if let metadata = parameters. metadata, !metadata. isEmpty {
308
301
let metadata = metadata. map ( RemotePostUpdateParametersWordPressComMetadata . init)
@@ -311,7 +304,7 @@ struct RemotePostUpdateParametersWordPressComEncoder: Encodable {
311
304
312
305
// Pages
313
306
if let parentPageID = parameters. parentPageID {
314
- try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
307
+ try container. encodeNullableID ( parentPageID, forKey: . parentPageID)
315
308
}
316
309
317
310
// Posts
@@ -370,9 +363,7 @@ struct RemotePostCreateParametersXMLRPCEncoder: Encodable {
370
363
}
371
364
372
365
// Pages
373
- if let parentPageID = parameters. parentPageID {
374
- try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
375
- }
366
+ try container. encodeIfPresent ( parameters. parentPageID, forKey: . parentPageID)
376
367
377
368
// Posts
378
369
try container. encodeIfPresent ( parameters. format, forKey: . format)
@@ -403,12 +394,7 @@ struct RemotePostUpdateParametersXMLRPCEncoder: Encodable {
403
394
try container. encodeStringIfPresent ( parameters. excerpt, forKey: . excerpt)
404
395
try container. encodeStringIfPresent ( parameters. slug, forKey: . slug)
405
396
if let value = parameters. featuredImageID {
406
- if let featuredImageID = value {
407
- try container. encode ( featuredImageID, forKey: . featuredImageID)
408
- } else {
409
- // Passing `null` doesn't work.
410
- try container. encode ( " " , forKey: . featuredImageID)
411
- }
397
+ try container. encodeNullableID ( value, forKey: . featuredImageID)
412
398
}
413
399
if let metadata = parameters. metadata, !metadata. isEmpty {
414
400
let metadata = metadata. map ( RemotePostUpdateParametersXMLRPCMetadata . init)
@@ -417,7 +403,7 @@ struct RemotePostUpdateParametersXMLRPCEncoder: Encodable {
417
403
418
404
// Pages
419
405
if let parentPageID = parameters. parentPageID {
420
- try container. encodeIfPresent ( parentPageID, forKey: . parentPageID)
406
+ try container. encodeNullableID ( parentPageID, forKey: . parentPageID)
421
407
}
422
408
423
409
// Posts
@@ -449,4 +435,14 @@ private extension KeyedEncodingContainer {
449
435
guard let value else { return }
450
436
try encode ( value ?? " " , forKey: key)
451
437
}
438
+
439
+ /// - note: Some IDs are passed as integers, but, to reset them, you need to pass
440
+ /// an empty string (passing `nil` does not work)
441
+ mutating func encodeNullableID( _ value: Int ? , forKey key: Key ) throws {
442
+ if let value {
443
+ try encode ( value, forKey: key)
444
+ } else {
445
+ try encode ( " " , forKey: key)
446
+ }
447
+ }
452
448
}
0 commit comments