Popularity
5.3
Stable
Activity
0.0
Stable
444
18
46

Code Quality Rank: L4
Programming language: Swift
License: MIT License
Tags: Networking    
Latest version: v0.1.1

Transporter alternatives and similar libraries

Based on the "Networking" category.
Alternatively, view Transporter alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Transporter or a related project?

Add another 'Networking' Library

README

Platform Language License Issues

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

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

// 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

Installation

  • Installation with CocoaPods
pod 'TransporterSwift', '0.1.1'

Then run the following command:

pod install
  • Copying all the files into your project
  • Using submodule

Todo

  • [ ] retry, pause, cancel
  • [ ] validation

Requirements

  • iOS 8.0+
  • Xcode 6.1

License

Transporter is released under the MIT license. See LICENSE for details.


*Note that all licence references and agreements mentioned in the Transporter README section above are relevant to that project's source code only.