Files
swift-composable-architectu…/Examples/TicTacToe/Sources/Core/LiveAuthenticationClient.swift
Brandon Williams d2240d0e76 The Composable Architecture
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2020-05-03 22:26:28 -07:00

25 lines
875 B
Swift

import AuthenticationClient
import Combine
import ComposableArchitecture
import Foundation
extension AuthenticationClient {
public static let live = AuthenticationClient(
login: { request in
(request.email.contains("@") && request.password == "password"
? Effect(value: .init(token: "deadbeef", twoFactorRequired: request.email.contains("2fa")))
: Effect(error: .invalidUserPassword))
.delay(for: 1, scheduler: DispatchQueue.global())
.eraseToEffect()
},
twoFactor: { request in
(request.token != "deadbeef"
? Effect(error: .invalidIntermediateToken)
: request.code != "1234"
? Effect(error: .invalidTwoFactor)
: Effect(value: .init(token: "deadbeefdeadbeef", twoFactorRequired: false)))
.delay(for: 1, scheduler: DispatchQueue.global())
.eraseToEffect()
})
}