From 3af70f5c7cb7f5559449899ac3fa576c6a2542f0 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Fri, 13 Mar 2020 22:12:36 -0500 Subject: [PATCH 1/2] Make sure POST body is properly URL-encoded --- Frameworks/Account/Credentials/URLRequest+RSWeb.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift b/Frameworks/Account/Credentials/URLRequest+RSWeb.swift index 1edd0ac8e..311a51e43 100755 --- a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift +++ b/Frameworks/Account/Credentials/URLRequest+RSWeb.swift @@ -36,8 +36,12 @@ public extension URLRequest { case .readerBasic: setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") httpMethod = "POST" - let postData = "Email=\(credentials.username)&Passwd=\(credentials.secret)" - httpBody = postData.data(using: String.Encoding.utf8) + var postData = URLComponents() + postData.queryItems = [ + URLQueryItem(name: "Email", value: credentials.username), + URLQueryItem(name: "Passwd", value: credentials.secret) + ] + httpBody = postData.percentEncodedQuery?.data(using: String.Encoding.utf8) case .readerAPIKey: let auth = "GoogleLogin auth=\(credentials.secret)" setValue(auth, forHTTPHeaderField: HTTPRequestHeader.authorization) From aed68580432c917948c5904616e032111568f71e Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Fri, 13 Mar 2020 22:16:24 -0500 Subject: [PATCH 2/2] Simplify .utf8 --- Frameworks/Account/Credentials/URLRequest+RSWeb.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift b/Frameworks/Account/Credentials/URLRequest+RSWeb.swift index 311a51e43..1717dc10f 100755 --- a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift +++ b/Frameworks/Account/Credentials/URLRequest+RSWeb.swift @@ -41,7 +41,7 @@ public extension URLRequest { URLQueryItem(name: "Email", value: credentials.username), URLQueryItem(name: "Passwd", value: credentials.secret) ] - httpBody = postData.percentEncodedQuery?.data(using: String.Encoding.utf8) + httpBody = postData.percentEncodedQuery?.data(using: .utf8) case .readerAPIKey: let auth = "GoogleLogin auth=\(credentials.secret)" setValue(auth, forHTTPHeaderField: HTTPRequestHeader.authorization)