From 92351c32b3e4597c26f6100a61c9750589f819da Mon Sep 17 00:00:00 2001 From: Povilas Staskus <4062343+staskus@users.noreply.github.com> Date: Wed, 5 Jun 2024 16:56:30 +0300 Subject: [PATCH 1/3] Support editing media metadata via XMLRPC Media is a type of a post therefore "wp.editPost" can be used to edit media metadata. Note that alternative text cannot be edited due to lack of XML-RPC support https://core.trac.wordpress.org/ticket/58582 --- .../Services/MediaServiceRemoteXMLRPC.m | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m b/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m index 0d0059ea..ba309c8c 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m +++ b/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m @@ -199,10 +199,46 @@ - (void)updateMedia:(RemoteMedia *)media success:(void (^)(RemoteMedia *remoteMedia))success failure:(void (^)(NSError *error))failure { - //HACK: Sergio Estevao: 2016-04-06 this option doens't exist on XML-RPC so we will always say that all was good - if (success) { - success(media); + NSParameterAssert([media.mediaID longLongValue] > 0); + + NSMutableDictionary *content = [NSMutableDictionary dictionary]; + if (media.title != nil) + { + content[@"post_title"] = media.title; } + + if (media.caption != nil) + { + content[@"post_excerpt"] = media.caption; + } + + if (media.descriptionText != nil) + { + content[@"post_content"] = media.descriptionText; + } + + NSArray *extraDefaults = @[media.mediaID]; + NSArray *parameters = [self XMLRPCArgumentsWithExtraDefaults:extraDefaults andExtra:content]; + + [self.api callMethod:@"wp.editPost" + parameters:parameters + success:^(id responseObject, NSHTTPURLResponse *httpResponse) { + BOOL updated = [responseObject boolValue]; + if (updated) { + if (success) { + success(media); + } + } else { + if (failure) { + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorUnknown userInfo:nil]; + failure(error); + } + } + } failure:^(NSError *error, NSHTTPURLResponse *httpResponse) { + if (failure) { + failure(error); + } + }]; } - (void)deleteMedia:(RemoteMedia *)media From b51884d91591c6016b139a0fdde30f1316bc6aa5 Mon Sep 17 00:00:00 2001 From: Povilas Staskus <4062343+staskus@users.noreply.github.com> Date: Thu, 6 Jun 2024 08:44:41 +0300 Subject: [PATCH 2/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d55ce4a5..991d83f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,7 @@ _None._ ### New Features -_None._ +- Support updating media metadata via XMLRPC API [#809] ### Bug Fixes From 9018987b1d7d8706cfdd73d3c48474658120bd17 Mon Sep 17 00:00:00 2001 From: Povilas Staskus <4062343+staskus@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:28:40 +0300 Subject: [PATCH 3/3] Update for consistent formatting --- .../WordPressKit/Services/MediaServiceRemoteXMLRPC.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m b/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m index ba309c8c..bcdc105e 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m +++ b/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m @@ -202,18 +202,16 @@ - (void)updateMedia:(RemoteMedia *)media NSParameterAssert([media.mediaID longLongValue] > 0); NSMutableDictionary *content = [NSMutableDictionary dictionary]; - if (media.title != nil) - { + + if (media.title != nil) { content[@"post_title"] = media.title; } - if (media.caption != nil) - { + if (media.caption != nil) { content[@"post_excerpt"] = media.caption; } - if (media.descriptionText != nil) - { + if (media.descriptionText != nil) { content[@"post_content"] = media.descriptionText; }