fel-cesar
7/11/2018 - 8:32 PM

UploadProgressDelegateSample.swift

//  SwiftViewController.swift
//  PrototypeApplication
//
//  Created by Felipe César Silveira de Assis on 12/12/17.
//  Copyright © 2017 CloudRail. All rights reserved.
//

import UIKit
import CloudrailSI

class SwiftViewController: UIViewController, CRUploadProgressDelegate{

  var currentProgress = Float(0);
  var filesize = 6903974.0;
  var uploaded = 0.0;

  @IBAction func buttonAction(_ sender: Any) {
    DispatchQueue.global(qos: .background).async {
      print("This will run in the background queue")
      self.basicDropbox()
    }
  }

  fileprivate func basicDropbox() {
    CRCloudRail.setAppKey("[CLOUDRAIL_APP]")
    let dropbox = Dropbox.init(clientId: "[DROPBOX_KEY]", clientSecret: "[DROPBOX_SECRET]")
       
    dropbox.setDelegate(self);
    dropbox.setTarget(self)

    let imageStream = InputStream.init(fileAtPath: "/[PATH_TO_FILE]/IMG_0018.JPG")!
    let imageStreamCustom = CustomStream.init(stream: imageStream)! // IMPORTANT: Use Custom Stream!!!
    imageStreamCustom.uploadProgressDelegate = self
    self.currentProgress = Float(0)
    do {
      try print(dropbox.userLogin() ?? "nil value FOUND")
      try dropbox.uploadFileToPath("/justUploaded.jpg", stream: imageStreamCustom, size: 6903974, overwrite: true)
    } catch  {
      print("Exception: \(error)")
    }
  }


  //MARK - UploadProgressDelegate
  
  func didUploadBytes(_ bytes: Int) {
    self.currentProgress = (Float(bytes)/Float(filesize))*100
    print("Uploaded: \(self.currentProgress)%")
  }
  
  func didCancelUpload() -> Bool {
    if self.currentProgress > 50.0 { // will cancel whenever the upload gets above 50%
      return true
    }
    return false
  }
}