Advertisement
Guest User

GigyaManager

a guest
Nov 22nd, 2019
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.20 KB | None | 0 0
  1. protocol GigyaManager {
  2.     typealias Account = MyAccount
  3.    
  4.     init(apiKey: String, apiDomain: String)
  5.    
  6.     var isLoggedIn: Bool { get }
  7.     var isLoggedInObservable: Observable<Bool> { get }
  8.    
  9.     var account: Account? { get }
  10.     var accountObservable: Observable<Account?> { get }
  11.    
  12.     func login(email: String, password: String) -> Single<Account>
  13.     func login(provider: SocialNetworkProvider) -> Single<Account>
  14.    
  15.     func register(email: String, password: String) -> Single<Account>
  16.     func register(provider: SocialNetworkProvider) -> Single<Account>
  17.    
  18.     func loadAccount() -> Single<Account>
  19.     func update(_ account: Account) -> Single<Account>
  20.    
  21.     func link(to provider: SocialNetworkProvider, in viewController: UIViewController) -> Single<Account>
  22.     func unlink(to provider: SocialNetworkProvider, in viewController: UIViewController) -> Single<Account>
  23. }
  24.  
  25. struct GigyaManagerImpl: GigyaManager {
  26.    
  27.     typealias Account = MyAccount
  28.    
  29.     private let gigya: GigyaCore<Account>
  30.    
  31.     var isLoggedIn: Bool = false
  32.     var isLoggedInObservable: Observable<Bool> = .just(false)
  33.    
  34.     var account: Account?
  35.     var accountObservable: Observable<Account?> = .just(nil)
  36.    
  37.     private var defaultParams: [String : String] = ["include" : "profile, data"]
  38.    
  39.     init(apiKey: String, apiDomain: String) {
  40.         self.gigya = Gigya.sharedInstance(Account.self)
  41.     }
  42.    
  43.     func login(email: String, password: String) -> Single<Account> {
  44.         //Simple example
  45.         return Single
  46.             .create { (single) -> Disposable in
  47.                 self.gigya.login(loginId: email, password: password, params: self.defaultParams) { (result) in
  48.                     switch result {
  49.                     case .success(let data):
  50.                         single(.success(data))
  51.                     case .failure(let error):
  52.                         single(.error(error)) //TODO
  53.                     @unknown default:
  54.                         fatalError("")
  55.                     }
  56.                 }
  57.                 return Disposables.create()
  58.             }
  59.             .catchError(map)
  60.     }
  61.    
  62.     func login(provider: SocialNetworkProvider) -> Single<Account> {
  63.         fatalError("") //TODO
  64.     }
  65.    
  66.     func register(email: String, password: String) -> Single<Account> {
  67.         fatalError("") //TODO
  68.     }
  69.    
  70.     func register(provider: SocialNetworkProvider) -> Single<Account> {
  71.         fatalError("") //TODO
  72.     }
  73.    
  74.     func loadAccount() -> Single<Account> {
  75.         fatalError("") //TODO
  76.     }
  77.    
  78.     func update(_ account: Account) -> Single<Account> {
  79.         fatalError("") //TODO
  80.     }
  81.    
  82.     func link(to provider: SocialNetworkProvider, in viewController: UIViewController) -> Single<Account> {
  83.         fatalError("") //TODO
  84.     }
  85.    
  86.     func unlink(to provider: SocialNetworkProvider, in viewController: UIViewController) -> Single<Account> {
  87.         fatalError("") //TODO
  88.     }
  89.    
  90.     func resetPassword(email: String) -> Completable {
  91.         fatalError("") //TODO
  92.     }
  93.    
  94.     private func map(_ error: Error) throws -> Single<Account> {
  95.         fatalError("") //TODO error management
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement