@@ -5,38 +5,37 @@ extension PostServiceRemoteREST: PostServiceRemoteExtended {
55 let path = self . path ( forEndpoint: " sites/ \( siteID) /posts/new?context=edit " , withVersion: . _1_2)
66 let parameters = try makeParameters ( from: RemotePostCreateParametersWordPressComEncoder ( parameters: parameters) )
77
8- let response = try await withUnsafeThrowingContinuation { continuation in
9- wordPressComRestApi. POST ( path, parameters: parameters) { object, _ in
10- continuation. resume ( returning: object)
11- } failure: { error, _ in
12- continuation. resume ( throwing: error)
13- }
14- }
15- return try await decodePost ( from: response)
8+ let response = try await wordPressComRestApi. perform ( . post, URLString: path, parameters: parameters) . get ( )
9+ return try await decodePost ( from: response. body)
1610 }
1711
1812 public func patchPost( withID postID: Int , parameters: RemotePostUpdateParameters ) async throws -> RemotePost {
1913 let path = self . path ( forEndpoint: " sites/ \( siteID) /posts/ \( postID) ?context=edit " , withVersion: . _1_2)
2014 let parameters = try makeParameters ( from: RemotePostUpdateParametersWordPressComEncoder ( parameters: parameters) )
2115
22- let response = try await withUnsafeThrowingContinuation { continuation in
23- wordPressComRestApi. POST ( path, parameters: parameters) { object, _ in
24- continuation. resume ( returning: object)
25- } failure: { error, _ in
26- continuation. resume ( throwing: error)
16+ let result = await wordPressComRestApi. perform ( . post, URLString: path, parameters: parameters)
17+ switch result {
18+ case . success( let response) :
19+ return try await decodePost ( from: response. body)
20+ case . failure( let error) :
21+ guard case . endpointError( let error) = error else {
22+ throw error
23+ }
24+ switch error. apiErrorCode ?? " " {
25+ case " unknown_post " : throw PostServiceRemoteUpdatePostError . notFound
26+ case " old-revision " : throw PostServiceRemoteUpdatePostError . conflict
27+ default : throw error
2728 }
2829 }
29- return try await decodePost ( from: response)
3030 }
3131}
3232
3333// Decodes the post in the background.
3434private func decodePost( from object: AnyObject ) async throws -> RemotePost {
35- guard let dictionary = object as? [ AnyHashable : Any ] ,
36- let post = PostServiceRemoteREST . remotePost ( fromJSONDictionary: dictionary) else {
35+ guard let dictionary = object as? [ AnyHashable : Any ] else {
3736 throw WordPressAPIError< WordPressComRestApiEndpointError> . unparsableResponse( response: nil , body: nil )
3837 }
39- return post
38+ return PostServiceRemoteREST . remotePost ( fromJSONDictionary : dictionary )
4039}
4140
4241private func makeParameters< T: Encodable > ( from value: T ) throws -> [ String : AnyObject ] {
0 commit comments