TransporterSwift 0.1.1

TransporterSwift 0.1.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2015 年 4 月
SPM支持 SPM

nghialv 维护。



功能

  • 同时或顺序上传/下载多个文件
    • 使用炫目的自定义操作符(`|||` 和 `-->`)对任务进行分组
  • 支持后台上传/下载
  • 支持进度跟踪(单个任务和任务组)
  • 可以暂停、继续、取消、重试任务
  • 可配置的头部
  • 可配置的请求参数

快速示例

let path = NSBundle.mainBundle().pathForResource("bigfile", ofType: "zip")
let fileUrl = NSURL(fileURLWithPath: path!)!

let task = UploadTask(url: "http://server.com", file: fileUrl)
    .progress { sent, total in
        let per = Double(sent) / Double(total)
        println("uploading: \(per)")
    }
    .completed { response, json, error in
        println("completed")
    }


 Transporter.add(task1 ||| task2 ||| task3)                     // concurrent tasks
            .progress { bytes, total in
                let per = Double(bytes) / Double(total)
                println("concurrent tasks: \(per)")
            }
            .completed { alltasks in
                println("task1, task2, task3: completed")
            }
            .add(task4 --> task5 --> task6)                       // sequential tasks 
            .progress { bytes, total in
                println("serial tasks")
            }
            .resume()

用法

// downloading task

let task = DownloadTask(url: downloadUrl, destination: des)
    .progress { bytes, total in
        let per = Double(bytes) / Double(total)
        println("downloading: \(per)")
    }
    .completed { response, _, error in
        println("completed")
    }


// uploading task
// upload types: File, Data, Stream

let task = UploadTask(url: "http://server.com", data: uploadData)
    .progress { sent, total in
        let per = Double(sent) / Double(total)
        println("uploading: \(per)")
    }
    .completed { response, json, error in
        println("completed")
    }


// using  `|||`  operator to create a group of concurrent tasks

Transporter.add(task1 ||| task2 ||| task3)

// using  `-->`  operator to create a group of sequential tasks

Transporter.add(task1 --> task2 --> task3)


// task

task.headers = ["key": "value"]
task.params = ["key": "value"]
task.pause()
task.cancel()
task.retry

// background handling
// add the following method in the app delegate

func application(application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: () -> Void) {
    Transporter.handleEventsForBackgroundURLSection(identifier, completionHandler: completionHandler)
}


// Transporter configurations

Transporter.headers = [key: value]
Transporter.timeoutIntervalForRequest = 30.0
Transporter.timeoutIntervalForResource = 24 * 60 * 60.0
Transporter.HTTPMaximumconnectionsPerHost = 5

安装

  • 使用 CocoaPods 进行安装
    // coming soon
  • 将所有文件复制到项目中
  • 使用子模块

待办事项

  • [ ] 重试、暂停、取消
  • [ ] 验证

要求

  • iOS 7.0+
  • Xcode 6.1

许可

Transporter 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。