// // Signup.swift // uSTADIUM // // Created by Sonny Trujillo on 4/1/19. // Copyright © 2019 uSTADIUM. All rights reserved. // import Foundation import UIKit let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "Unkown" let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String ?? "Unkown" let systemVersion = UIDevice.current.systemVersion enum SignupType { case ustadium case facebook case twitter } struct ChangePassword: Encodable { var oldPassword: String? var newPassword: String } struct ForgotPassword: Encodable { var username: String var email: String } struct ForgotUsername: Encodable { var email: String } /// Response for the following apis. /// auth/valid/email/__ response structure /// auth/valid/username/__ response structure struct ValidResponse: Decodable { var message: String } /// api/users/refresh-firebasetoken response structure struct RefreshFirebaseResponse: Decodable { var firebaseToken: String } struct RegisterDevice: Encodable { var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var project = "abd87" var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name init(token: String){ self.deviceToken = token } } /// auth/reset-forgotten-password request structure struct ResetPasswordWithCode: Encodable { var code: String var password: String var username: String var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var project = "abd87" var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name init(code: String, username: String, password: String){ self.username = username self.password = password self.code = code } } /// auth/loginWithToken request structure. struct TokenReload: Encodable { var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var project = "abd87" var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name var referral: AccountReferral? } /// auth/token request structure. struct CustomAuth: Encodable { var username: String var password: String var feeds: [Int]? var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var project = "abd87" var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name var referral: AccountReferral? let appVersion = "ios(\(UIDevice.current.systemVersion)) \(UIDevice.current.modelName) uSTADIUM \(version)(\(build))" init(username: String, password: String, feeds: [Int]?){ self.username = username self.password = password self.feeds = feeds } } /// auth/facebook request structure struct FacebookAuth: Encodable { var access_token: String var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var feeds: [Int]? var project = "abd87" var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name var referral: AccountReferral? let appVersion = "ios(\(UIDevice.current.systemVersion)) \(UIDevice.current.modelName) uSTADIUM \(version)(\(build))" init(access: String, feeds: [Int]){ self.access_token = access self.feeds = feeds } } /// auth/twitter request structure struct TwitterAuth: Encodable { var oauth_token: String var oauth_token_secret: String var user_id: String var project = "abd87" var feeds: [Int]? var deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String var bundleID = "com.uSTADIUM.uSTADIUM1" var platform = "ios" var deviceName = UIDevice.current.name var referral: AccountReferral? let appVersion = "ios(\(UIDevice.current.systemVersion)) \(UIDevice.current.modelName) uSTADIUM \(version)(\(build))" init(oauth_token: String, oauth_secret: String, user_id: String, feeds: [Int]){ self.oauth_token = oauth_token self.oauth_token_secret = oauth_secret self.user_id = user_id self.feeds = feeds } } /// Account referral structure struct AccountReferral: Encodable { enum Result: String, Encodable { case registered case loggedIn } var link: URL let platform = "ios" var action: String var accountResult: AccountReferral.Result init(link: URL, action: String, accountResult: AccountReferral.Result){ self.link = link self.action = action self.accountResult = accountResult } } /// auth/signup request structure struct AccountSignup: Encodable { let email: String let username: String let password: String let project = "abd87" var feeds: [Int]? var keywords: [String]? var referral: AccountReferral? let platform = "ios" let deviceToken = UserDefaults.standard.object(forKey: "ustadiumDeviceToken") as? String let bundleID = "com.uSTADIUM.uSTADIUM1" let deviceName = UIDevice.current.name let appVersion = "ios(\(UIDevice.current.systemVersion)) \(UIDevice.current.modelName) uSTADIUM \(version)(\(build))" let deviceID = UIDevice.current.identifierForVendor?.uuidString ?? UserDefaults.getDeviceID() }