Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func uploadImageToAWSS3AndRegisterUserOnTTS(){
- RappleActivityIndicatorView.startAnimating()
- var localFileName:String?
- var result:String = ""
- if let imageToUploadUrl = selectedImageUrl
- {
- if let phResult = PHAsset.fetchAssets(withALAssetURLs: [imageToUploadUrl as URL], options: nil).firstObject! as? PHAsset {
- PHImageManager.default().requestImageData(for: phResult, options: nil, resultHandler: { _, _, _, info in
- if let fileName = (info?["PHImageFileURLKey"] as? NSURL)?.lastPathComponent {
- localFileName = fileName
- // Configure AWS Credentials
- let accessKey = "AKIAIQKFLS6OHX7MZ2YQ"
- let secretKey = "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"
- let credentialsProvider = AWSStaticCredentialsProvider(accessKey: accessKey, secretKey: secretKey)
- let configuration = AWSServiceConfiguration(region:AWSRegionType.usEast1, credentialsProvider:credentialsProvider)
- AWSServiceManager.default().defaultServiceConfiguration = configuration
- // Set up AWS Transfer Manager Request
- let S3BucketName = "tts-user-avatars"
- let remoteName:String = TTSUtils.parseDateToMMddYYHHmmssString(Date()) + "_" + localFileName!
- //let remoteName:String = (TTSCore.sharedInstance().user?.familyName)! + "_" + TTSUtils.parseDateToMMddYYHHmmssString(Date())
- let uploadRequest = AWSS3TransferManagerUploadRequest()!
- uploadRequest.body = self.generateImageUrl(fileName: remoteName) as URL!
- uploadRequest.key = remoteName
- uploadRequest.bucket = S3BucketName
- uploadRequest.contentType = "image/jpeg"
- uploadRequest.acl = .publicRead
- // Perform file upload
- let transferManager = AWSS3TransferManager.default()
- transferManager?.upload(uploadRequest).continue({ [weak self] (task: AWSTask<AnyObject>) -> Any? in
- DispatchQueue.main.async {
- //Acá hacer algo asincrónico, como "Stop Animating", etc
- }
- if let error = task.error {
- print("Upload failed with error: (\(error.localizedDescription))")
- }
- if let exception = task.exception {
- print("Upload failed with exception (\(exception))")
- }
- if task.result != nil {
- let url = AWSS3.default().configuration.endpoint.url
- let publicURL = url?.appendingPathComponent(uploadRequest.bucket!).appendingPathComponent(uploadRequest.key!)
- print("Uploaded to:\(publicURL)")
- result = (publicURL?.absoluteString)!
- }
- //NOTA: Si está todo bien con la imagen, "Result" contendrá la URL a AWS, y sino, "Result" estará vacio. Pero se creará el Usuario.
- self?.registerUserOnTTS(awsImageURL: result)
- return nil
- })
- }
- })
- }
- }else{
- //NOTA: Si el usuario decide no subir una imagen, directamente se crea el usuario, sin URL de imagen.
- self.registerUserOnTTS(awsImageURL: result)
- }
- }
- func registerUserOnTTS(awsImageURL:String){
- TTSNetwork.sharedInstance().signUpTTS(
- self.nameField.text!,
- apellido: self.familyNameField.text!,
- email: TTSUtils.encodeBase64(stringToEncode: self.emailField.text!)!,
- password: TTSUtils.encodeBase64(stringToEncode: self.passwordField.text!)!,
- foto: TTSUtils.encodeBase64(stringToEncode: awsImageURL)!,
- callback: { (respuesta:String?, error:NSError?) in
- if error == nil {
- //** WS Call: loginTTS
- TTSNetwork.sharedInstance().loginTTS(
- TTSUtils.encodeBase64(stringToEncode: self.emailField.text!)!,
- password: TTSUtils.encodeBase64(stringToEncode: self.passwordField.text!)!,
- latitud: 0.000,
- longitud: 0.000,
- callback: { (respuesta:TTSUser?, error:NSError?) in
- RappleActivityIndicatorView.stopAnimating()
- if error != nil {
- RappleActivityIndicatorView.stopAnimating()
- let alerta = UIAlertController(title: "Autenticación", message: error?.localizedDescription, preferredStyle: .alert)
- alerta.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
- self.present(alerta, animated: true, completion: nil)
- return
- }
- print("Nombre: " + (respuesta?.firstName)! + " " + (respuesta?.familyName)!)
- TTSCore.sharedInstance().user = respuesta
- let token:String = respuesta!.token
- let imageURL:String = respuesta!.imagenURL
- //** WS Call: getContactDataByClip
- TTSNetwork.sharedInstance().getContactDataByClip(token, callback: { (respuesta:TTSUser?, error:NSError?) in
- TTSCore.sharedInstance().user = respuesta
- TTSCore.sharedInstance().user?.email = self.emailField.text!
- TTSCore.sharedInstance().user?.token = token
- TTSCore.sharedInstance().user?.imagenURL = imageURL
- self.loginDelegate?.loginDidFinishWithSuccess(true)
- RappleActivityIndicatorView.stopAnimating()
- TTSUtils.saveUserDataForAutoLoginTTS(userBase64: TTSUtils.encodeBase64(stringToEncode:self.emailField.text!)!,
- passBase64: TTSUtils.encodeBase64(stringToEncode:self.passwordField.text!)!,
- token: token)
- })
- })
- }else{
- let alerta = UIAlertController(title: "Autenticación", message: error?.localizedDescription, preferredStyle: .alert)
- alerta.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
- self.present(alerta, animated: true, completion: nil)
- return
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement