暫無描述

GuestUserInfoRemoteAPI.swift 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // GuestUserInfoRemoteAPI.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by ffib on 2018/12/26.
  6. // Copyright © 2018 yb. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. struct GuestUserInfoRemoteAPI: UserInfoRemoteAPI {
  11. typealias Model = UserInfo
  12. var path: Interfaces { return .guestLogin }
  13. var parameter: Parameter = [:]
  14. init() {
  15. parameter = ["uuid": getUUID()]
  16. }
  17. func login() -> Single<UserInfo> {
  18. return Single.create(subscribe: { (observer) in
  19. observer(.success(UserInfo(json: ["user_id": "fiDz2Ms" as AnyObject, "userName": "郑剑飞" as AnyObject, "photoPath": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJibSYLgvXpMakvD9FaCqfiaWqcMiaiaz905YxWPuO4hy8F2lGheV7kVr9vKKXFgmL1S5s4QJgxwuwtVw/132" as AnyObject])))
  20. return Disposables.create()
  21. })
  22. }
  23. func getUUID() -> String {
  24. let keyChainDic = NSMutableDictionary()
  25. keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying)
  26. keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying)
  27. keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnAttributes as! NSCopying)
  28. keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnData as! NSCopying)
  29. var result: AnyObject?
  30. var uuid: String? = nil
  31. SecItemCopyMatching(keyChainDic, &result)
  32. if let resultDic = result as? NSDictionary {
  33. if let data = resultDic.object(forKey: kSecValueData) as? Data {
  34. uuid = NSString(data: data, encoding: String.Encoding.ascii.rawValue) as String?
  35. }
  36. }
  37. if let uuid = uuid { return uuid }
  38. let uuidStr = UUID().uuidString
  39. let data = uuidStr.data(using: .ascii)
  40. keyChainDic.setObject(data!, forKey: kSecValueData as! NSCopying)
  41. SecItemAdd(keyChainDic, nil)
  42. return uuidStr
  43. }
  44. }
  45. //extension GuestUserInfoRemoteAPI {
  46. // func parse(_ json: JSON) -> UserInfo? {
  47. // guard let result = json["data"] as? [String: AnyObject] else { return nil }
  48. // return UserInfo(json: result)
  49. // }
  50. //
  51. //}