Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func createAccount(page: Page? = nil, accessToken: String? = nil, facebookUid: String? = nil, code: String? = nil, firstname: String, lastname: String, email: String, password: String? = nil, imageData: Data?, profileType: profile_types, completion: @escaping (_ result: NSDictionary) -> Void) {
- //ToDo
- let time = Int(Date().timeIntervalSince1970)
- var namePart = "\(firstname.lowercased())\(lastname.lowercased())"
- namePart = namePart.replacingOccurrences(of: "ø", with: "o")
- namePart = namePart.replacingOccurrences(of: "å", with: "aa")
- namePart = namePart.replacingOccurrences(of: "æ", with: "ae")
- //let username = "\(firstname.lowercaseString)\(lastname.lowercaseString)\(time)"
- let username = "\(namePart)\(time)"
- var facebookMode: Bool = false
- var parameters: [String: Any] = [
- "ip": ip,
- "email": email,
- "username": username,
- "timezone": self.getTimeZone(),
- "language": (Bundle.main.preferredLocalizations.first! as NSString) as String,
- "terms": "1",
- "1_1_3_alias_first_name": firstname,
- "1_1_4_alias_last_name": lastname,
- "1_15_45_alias_first_name": firstname, // Organization profile field that sets the displayname of the user behind the organizations to the placeName.
- "profile_type": profileType.rawValue
- ]
- if let accessToken = accessToken, let facebookUid = facebookUid, let code = code {
- parameters["facebook_uid"] = facebookUid
- parameters["access_token"] = accessToken
- parameters["code"] = code
- facebookMode = true // FB mode
- }
- if let password = password {
- parameters["password"] = password
- parameters["passconf"] = password
- }
- // if let userName = userName { // Replace the calculated username with the passed one. Used for pages, as the pagename gets the value from username
- //
- // parameters["username"] = userName
- //
- // }
- print("CreateAccount: \(parameters.description)")
- Alamofire.upload(multipartFormData: { multipartFormData in
- //Multipartformadata
- //Add image
- if imageData != nil{
- multipartFormData.append(imageData!, withName: "photo", fileName: "myImage.jpg", mimeType: "image/jpeg")
- }
- // import parameters
- for (key, value) in parameters {
- multipartFormData.append(String(describing: value).data(using: String.Encoding.utf8)!, withName: key)
- }
- },usingThreshold: SessionManager.multipartFormDataEncodingMemoryThreshold,to: ("\(new_api_url)/makeable/signup"),method:.post,
- headers:["oauth_consumer_key": oauth_consumer_key, "oauth_consumer_secret": oauth_consumer_secret], encodingCompletion: { encodingResult in
- switch encodingResult {
- case .success(let upload, _, _):
- upload.responseJSON { response in
- //Response
- print("CreateProfile response: \(response)")
- if let JSON = response.result.value as? [String:Any] {
- print("NEW_USER: \(JSON.description)")
- if JSON[json_status_code]! as? Int == 200 {
- let status = 1
- let message = NSLocalizedString("USER_CREATED", comment: "")
- let tmp_body = JSON["body"] as! [String:Any]
- let tmp_user = tmp_body["user"] as! [String:Any]
- let id = tmp_user["user_id"] as? Int
- let token = tmp_body["oauth_token"]! as? String
- let secret = tmp_body["oauth_secret"]! as? String
- let email = tmp_user["email"] as? String
- let userName = tmp_user["displayname"] as? String
- let imageURL = tmp_user["image_profile"] as? String
- // Update UserDefaults and Headers
- UserDefaults.standard.set(token!, forKey: "token")
- UserDefaults.standard.set(secret!, forKey: "secret")
- UserDefaults.standard.set(id!, forKey: "userId")
- // UserDefaults.standard.set(true, forKey: "login")
- UserDefaults.standard.synchronize()
- headers = ["oauth_consumer_key": oauth_consumer_key, "oauth_consumer_secret": oauth_consumer_secret, "oauth_token": token!, "oauth_secret": secret!]
- var account: Account!
- //Get profileImage
- let cache = Shared.imageCache
- let URL = NSURL(string: imageURL!)!
- let fetcher = NetworkFetcher<UIImage>(URL: URL as URL)
- cache.fetch(fetcher: fetcher).onSuccess { image in
- if facebookMode {
- account = Account(accountId: id!, token: token!, secret: secret!, profileType: profileType, email: email!, password: code!, userName: userName!, imageURL: imageURL!, image: image)
- }
- else {
- account = Account(accountId: id!, token: token!, secret: secret!, profileType: profileType, email: email!, password: password!, userName: userName!, imageURL: imageURL!, image: image)
- }
- self.pc.setupProfileInfo(account: account, page: page) { result in
- print("setupProfileInfo result: \(result)")
- let user = result["user"]!
- let userDict: NSDictionary = ["message": message, "status": status, "user": user]
- // User created successfully, send out a successnotification for the loggedIn observer
- NotificationCenter.default.post(name: NSNotification.Name(rawValue: NetworkController.NotificationLoginSuccess), object: nil)
- return completion(userDict)
- }
- }
- }
- else{
- var message = NSLocalizedString("USER_CREATION_FAILED", comment: "")
- if let messageDict = JSON["message"] as? NSDictionary {
- if let email = messageDict["email"] as? String {
- message = email
- }
- let userDict = ["status" : JSON[json_status_code]!, "message":message]
- return completion(userDict as NSDictionary)
- }
- else{
- let userDict = ["status" : JSON[json_status_code]!, "message":message]
- return completion(userDict as NSDictionary)
- }
- }
- }
- else {
- return completion(["message": "No response result value", "status": 0])
- }
- }
- case .failure(let encodingError):
- print(encodingError)
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement