Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 7.84 KB | None | 0 0
  1.     func uploadImageToAWSS3AndRegisterUserOnTTS(){
  2.        
  3.         RappleActivityIndicatorView.startAnimating()
  4.        
  5.         var localFileName:String?
  6.         var result:String = ""
  7.        
  8.         if let imageToUploadUrl = selectedImageUrl
  9.         {
  10.             if let phResult = PHAsset.fetchAssets(withALAssetURLs: [imageToUploadUrl as URL], options: nil).firstObject! as? PHAsset {
  11.                
  12.                 PHImageManager.default().requestImageData(for: phResult, options: nil, resultHandler: { _, _, _, info in
  13.                    
  14.                     if let fileName = (info?["PHImageFileURLKey"] as? NSURL)?.lastPathComponent {
  15.                        
  16.                         localFileName = fileName
  17.                        
  18.                         // Configure AWS Credentials
  19.                         let accessKey = "AKIAIQKFLS6OHX7MZ2YQ"
  20.                         let secretKey = "iF7n0miWXn4WIaLePG5z+tKUUfzgH37DxNR+V3fY"
  21.                         let credentialsProvider = AWSStaticCredentialsProvider(accessKey: accessKey, secretKey: secretKey)
  22.                         let configuration = AWSServiceConfiguration(region:AWSRegionType.usEast1, credentialsProvider:credentialsProvider)
  23.                        
  24.                         AWSServiceManager.default().defaultServiceConfiguration = configuration
  25.                        
  26.                         // Set up AWS Transfer Manager Request
  27.                         let S3BucketName = "tts-user-avatars"
  28.                         let remoteName:String = TTSUtils.parseDateToMMddYYHHmmssString(Date()) + "_" + localFileName!
  29.                         //let remoteName:String = (TTSCore.sharedInstance().user?.familyName)! + "_" + TTSUtils.parseDateToMMddYYHHmmssString(Date())
  30.                        
  31.                         let uploadRequest = AWSS3TransferManagerUploadRequest()!
  32.                         uploadRequest.body = self.generateImageUrl(fileName: remoteName) as URL!
  33.                         uploadRequest.key = remoteName
  34.                         uploadRequest.bucket = S3BucketName
  35.                         uploadRequest.contentType = "image/jpeg"
  36.                         uploadRequest.acl = .publicRead
  37.                        
  38.                         // Perform file upload
  39.                         let transferManager = AWSS3TransferManager.default()
  40.                         transferManager?.upload(uploadRequest).continue({ [weak self] (task: AWSTask<AnyObject>) -> Any? in
  41.                            
  42.                             DispatchQueue.main.async {
  43.                                 //Acá hacer algo asincrónico, como "Stop Animating", etc
  44.                             }
  45.                            
  46.                             if let error = task.error {
  47.                                 print("Upload failed with error: (\(error.localizedDescription))")
  48.                             }
  49.                             if let exception = task.exception {
  50.                                 print("Upload failed with exception (\(exception))")
  51.                             }
  52.                            
  53.                             if task.result != nil {
  54.                                 let url = AWSS3.default().configuration.endpoint.url
  55.                                 let publicURL = url?.appendingPathComponent(uploadRequest.bucket!).appendingPathComponent(uploadRequest.key!)
  56.                                 print("Uploaded to:\(publicURL)")
  57.                                 result = (publicURL?.absoluteString)!
  58.                             }
  59.                            
  60.                             //NOTA: Si está todo bien con la imagen, "Result" contendrá la URL a AWS, y sino, "Result" estará vacio. Pero se creará el Usuario.
  61.                            
  62.                             self?.registerUserOnTTS(awsImageURL: result)
  63.                            
  64.                             return nil
  65.                         })
  66.                        
  67.                        
  68.                     }
  69.                 })
  70.             }
  71.            
  72.         }else{
  73.             //NOTA: Si el usuario decide no subir una imagen, directamente se crea el usuario, sin URL de imagen.
  74.            
  75.             self.registerUserOnTTS(awsImageURL: result)
  76.         }
  77.     }
  78.  
  79.    
  80.     func registerUserOnTTS(awsImageURL:String){
  81.         TTSNetwork.sharedInstance().signUpTTS(
  82.             self.nameField.text!,
  83.             apellido: self.familyNameField.text!,
  84.             email: TTSUtils.encodeBase64(stringToEncode: self.emailField.text!)!,
  85.             password: TTSUtils.encodeBase64(stringToEncode: self.passwordField.text!)!,
  86.             foto: TTSUtils.encodeBase64(stringToEncode: awsImageURL)!,
  87.             callback: { (respuesta:String?, error:NSError?) in
  88.                
  89.                 if error == nil {
  90.                    
  91.                     //** WS Call: loginTTS
  92.                     TTSNetwork.sharedInstance().loginTTS(
  93.                         TTSUtils.encodeBase64(stringToEncode: self.emailField.text!)!,
  94.                         password: TTSUtils.encodeBase64(stringToEncode: self.passwordField.text!)!,
  95.                         latitud: 0.000,
  96.                         longitud: 0.000,
  97.                         callback: { (respuesta:TTSUser?, error:NSError?) in
  98.                             RappleActivityIndicatorView.stopAnimating()
  99.                            
  100.                             if error != nil {
  101.                                 RappleActivityIndicatorView.stopAnimating()
  102.                                
  103.                                 let alerta = UIAlertController(title: "Autenticación", message: error?.localizedDescription, preferredStyle: .alert)
  104.                                 alerta.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
  105.                                 self.present(alerta, animated: true, completion: nil)
  106.                                 return
  107.                             }
  108.                            
  109.                             print("Nombre: " + (respuesta?.firstName)! + " " + (respuesta?.familyName)!)
  110.                            
  111.                             TTSCore.sharedInstance().user = respuesta
  112.                             let token:String = respuesta!.token
  113.                             let imageURL:String = respuesta!.imagenURL
  114.                            
  115.                             //** WS Call: getContactDataByClip
  116.                             TTSNetwork.sharedInstance().getContactDataByClip(token, callback: { (respuesta:TTSUser?, error:NSError?) in
  117.                                 TTSCore.sharedInstance().user = respuesta
  118.                                 TTSCore.sharedInstance().user?.email = self.emailField.text!
  119.                                 TTSCore.sharedInstance().user?.token = token
  120.                                 TTSCore.sharedInstance().user?.imagenURL = imageURL
  121.                                 self.loginDelegate?.loginDidFinishWithSuccess(true)
  122.                                 RappleActivityIndicatorView.stopAnimating()
  123.                                
  124.                                 TTSUtils.saveUserDataForAutoLoginTTS(userBase64: TTSUtils.encodeBase64(stringToEncode:self.emailField.text!)!,
  125.                                                                      passBase64: TTSUtils.encodeBase64(stringToEncode:self.passwordField.text!)!,
  126.                                                                      token: token)
  127.                                
  128.                             })
  129.                     })
  130.                 }else{
  131.                     let alerta = UIAlertController(title: "Autenticación", message: error?.localizedDescription, preferredStyle: .alert)
  132.                     alerta.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
  133.                     self.present(alerta, animated: true, completion: nil)
  134.                     return
  135.                 }
  136.         })
  137.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement