diff --git a/Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift index 1c525e63c..0a947ccac 100644 --- a/Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift +++ b/Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift @@ -111,13 +111,18 @@ final class FeedWranglerAPICaller: NSObject { } func renameSubscription(feedID: String, newName: String, completion: @escaping (Result) -> Void) { - let url = FeedWranglerConfig.clientURL - .appendingPathComponent("subscriptions/rename_feed") - .appendingQueryItems([ - URLQueryItem(name: "feed_id", value: feedID), - URLQueryItem(name: "feed_name", value: newName), - ]) - + var postData = URLComponents(url: FeedWranglerConfig.clientURL, resolvingAgainstBaseURL: false) + postData?.path += "subscriptions/rename_feed" + postData?.queryItems = [ + URLQueryItem(name: "feed_id", value: feedID), + URLQueryItem(name: "feed_name", value: newName), + ] + + guard let url = postData?.urlWithEnhancedPercentEncodedQuery else { + completion(.failure(FeedWranglerError.general(message: "Could not encode name"))) + return + } + standardSend(url: url, resultType: FeedWranglerSubscriptionsRequest.self) { result in switch result { case .success: @@ -290,3 +295,16 @@ final class FeedWranglerAPICaller: NSObject { } } + +private extension URLComponents { + + var urlWithEnhancedPercentEncodedQuery: URL? { + guard let tempQueryItems = self.queryItems, !tempQueryItems.isEmpty else { + return self.url + } + + var tempComponents = self + tempComponents.percentEncodedQuery = self.enhancedPercentEncodedQuery + return tempComponents.url + } +}