Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nghialv/transporter
A tiny library makes uploading and downloading easier
https://github.com/nghialv/transporter
Last synced: 6 days ago
JSON representation
A tiny library makes uploading and downloading easier
- Host: GitHub
- URL: https://github.com/nghialv/transporter
- Owner: nghialv
- License: mit
- Created: 2015-03-26T07:42:59.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-21T12:04:39.000Z (almost 9 years ago)
- Last Synced: 2024-11-07T01:54:37.806Z (14 days ago)
- Language: Swift
- Homepage:
- Size: 16.9 MB
- Stars: 453
- Watchers: 20
- Forks: 44
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Platform](http://img.shields.io/badge/platform-ios-blue.svg?style=flat
)](https://developer.apple.com/iphone/index.action)
[![Language](http://img.shields.io/badge/language-swift-brightgreen.svg?style=flat
)](https://developer.apple.com/swift)
[![License](http://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat
)](http://mit-license.org)
[![Issues](https://img.shields.io/github/issues/nghialv/Transporter.svg?style=flat
)](https://github.com/nghialv/Transporter/issues?state=open)Features
------ uploading/downloading multiple files concurrently or sequentially
- grouping tasks with awesome custom operators (`|||` and `-->`)
- supports background uploading/downloading
- supports progress tracking (single task and group of tasks)
- enable to resume, pause, cancel, retry the task
- header configurable
- request parameters configurable**Quick example**
``` swift
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()```
Usage
-----``` swift
// downloading tasklet 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, Streamlet 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 delegatefunc 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
```Installation
-----
* Installation with CocoaPods```ruby
pod 'TransporterSwift', '0.1.1'
```Then run the following command:
```sh
pod install
```* Copying all the files into your project
* Using submoduleTodo
-----
- [ ] retry, pause, cancel
- [ ] validationRequirements
-----
- iOS 8.0+
- Xcode 6.1License
-----Transporter is released under the MIT license. See LICENSE for details.