Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Magic Links: Wires new Endpoints #1612

Merged
merged 5 commits into from
Jul 15, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions Simplenote/Classes/MagicLinkAuthenticator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,20 @@ private extension MagicLinkAuthenticator {

@discardableResult
func attemptLoginWithAuthCode(queryItems: [URLQueryItem]) -> Bool {
guard let authKey = queryItems.value(for: Constants.authKeyField),
guard let email = queryItems.base64DecodedValue(for: Constants.emailField),
let authCode = queryItems.value(for: Constants.authCodeField),
!authKey.isEmpty, !authCode.isEmpty
!email.isEmpty, !authCode.isEmpty
else {
return false
}

NSLog("[MagicLinkAuthenticator] Requesting SyncToken for \(authKey) and \(authCode)")
NSLog("[MagicLinkAuthenticator] Requesting SyncToken for \(email) and \(authCode)")
NotificationCenter.default.post(name: .magicLinkAuthWillStart, object: nil)

Task {
do {
let remote = LoginRemote()
let confirmation = try await remote.requestLoginConfirmation(authKey: authKey, authCode: authCode)
let confirmation = try await remote.requestLoginConfirmation(email: email, authCode: authCode)

Task { @MainActor in
NSLog("[MagicLinkAuthenticator] Should auth with token \(confirmation.syncToken)")
Expand Down Expand Up @@ -111,6 +111,5 @@ private struct AllowedHosts {
private struct Constants {
static let emailField = "email"
static let tokenField = "token"
static let authKeyField = "auth_key"
static let authCodeField = "auth_code"
}
4 changes: 2 additions & 2 deletions Simplenote/Classes/SimplenoteConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ class SimplenoteConstants: NSObject {
///
static let resetPasswordURL = currentEngineBaseURL.appendingPathComponent("/reset/?redirect=simplenote://launch&email=")
static let settingsURL = currentEngineBaseURL.appendingPathComponent("/settings")
static let loginRequestURL = currentEngineBaseURL.appendingPathComponent("/account/request-login")
static let loginCompletionURL = currentEngineBaseURL.appendingPathComponent("/account/complete-login")
static let loginRequestURL = "https://magic-code-dot-simple-note-hrd.appspot.com/account/request-login" //googleAppEngineBaseURL.appendingPathComponent("/account/request-login")
static let loginCompletionURL = "https://magic-code-dot-simple-note-hrd.appspot.com/account/complete-login" //googleAppEngineBaseURL.appendingPathComponent("/account/complete-login")
jleandroperez marked this conversation as resolved.
Show resolved Hide resolved
static let signupURL = currentEngineBaseURL.appendingPathComponent("/account/request-signup")
static let verificationURL = currentEngineBaseURL.appendingPathComponent("/account/verify-email/")
static let accountDeletionURL = currentEngineBaseURL.appendingPathComponent("/account/request-delete/")
Expand Down
14 changes: 7 additions & 7 deletions Simplenote/LoginRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import Foundation
class LoginRemote: Remote {

func requestLoginEmail(email: String, completion: @escaping (_ result: Result<Data?, RemoteError>) -> Void) {
let request = requestForLoginRequest(with: email)
let request = requestForLoginRequest(email: email)
performDataTask(with: request, completion: completion)
}

func requestLoginConfirmation(authKey: String, authCode: String) async throws -> LoginConfirmationResponse {
let request = requestForLoginCompletion(authKey: authKey, authCode: authCode)
func requestLoginConfirmation(email: String, authCode: String) async throws -> LoginConfirmationResponse {
let request = requestForLoginCompletion(email: email, authCode: authCode)
return try await performDataTask(with: request, type: LoginConfirmationResponse.self)
}
}
Expand All @@ -28,19 +28,19 @@ struct LoginConfirmationResponse: Decodable {
//
private extension LoginRemote {

func requestForLoginRequest(with email: String) -> URLRequest {
func requestForLoginRequest(email: String) -> URLRequest {
let url = URL(string: SimplenoteConstants.loginRequestURL)!
return requestForURL(url, method: RemoteConstants.Method.POST, httpBody: [
"request_source": SimplenoteConstants.simplenotePlatformName,
"username": email.lowercased()
])
}

func requestForLoginCompletion(authKey: String, authCode: String) -> URLRequest {
func requestForLoginCompletion(email: String, authCode: String) -> URLRequest {
let url = URL(string: SimplenoteConstants.loginCompletionURL)!
return requestForURL(url, method: RemoteConstants.Method.POST, httpBody: [
"auth_key": authKey,
"auth_code": authCode
"auth_code": authCode,
"username": email
])
}
}