1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import Foundation
- import RxSwift
- struct GuestUserInfoRemoteAPI: UserInfoRemoteAPI {
-
- private func parse(_ json: JSON) -> UserInfo? {
- guard let data = json["data"] as? [String: AnyObject] else { return nil }
- return UserInfo(json: data)
- }
-
- func login() -> Single<UserInfo> {
- let contentResource = ContentResource(path: .guestLogin,
- parameter: ["uuid": getUUID()],
- parseJSON: parse)
- return contentResource.loadContent()
- }
-
- func getUUID() -> String {
- let keyChainDic = NSMutableDictionary()
- keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying)
- keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying)
- keyChainDic.setObject(kCFBooleanTrue as Any, forKey: kSecReturnAttributes as! NSCopying)
- keyChainDic.setObject(kCFBooleanTrue as Any, forKey: kSecReturnData as! NSCopying)
-
- var result: AnyObject?
- var uuid: String? = nil
- SecItemCopyMatching(keyChainDic, &result)
- if let resultDic = result as? NSDictionary {
- if let data = resultDic.object(forKey: kSecValueData) as? Data {
- uuid = NSString(data: data, encoding: String.Encoding.ascii.rawValue) as String?
- }
- }
-
- if let uuid = uuid { return uuid }
- let uuidStr = UUID().uuidString
- let data = uuidStr.data(using: .ascii)
- keyChainDic.setObject(data!, forKey: kSecValueData as! NSCopying)
- SecItemAdd(keyChainDic, nil)
- return uuidStr
- }
- }
|