<span aria-hidden="true" id="transloaditkit-"></span>

# TransloaditKit

[transloadit/transloaditkit⁠](https://github.com/transloadit/transloaditkit)

<span aria-hidden="true" id="transloaditkit-sdk"></span>

It's easy to start using Transloadit in Objective-C and Swift using CocoaPods or Carthage and leverage file uploading & encoding in macOS and iOS apps.

<span aria-hidden="true" id="user-content-transloaditkit-install"></span>

<span aria-hidden="true" id="install"></span>

## Install

<span aria-hidden="true" id="user-content-transloaditkit-cocoapods"></span>

<span aria-hidden="true" id="cocoapods"></span>

### CocoaPods

```ruby
pod 'Transloadit', '~> 3.0'

```

<span aria-hidden="true" id="user-content-transloaditkit-swift-package-manager"></span>

<span aria-hidden="true" id="swift-package-manager"></span>

### Swift Package Manager

```swift
dependencies: [
    .package(url: "https://github.com/transloadit/TransloaditKit", .upToNextMajor(from: "3.0.0"))
]

```

<span aria-hidden="true" id="user-content-transloaditkit-usage"></span>

<span aria-hidden="true" id="usage"></span>

## Usage

Start by initializing `Transloadit`.

```swift
let credentials = Transloadit.Credentials(key: "SomeKey", secret: "SomeSecret")
let transloadit = Transloadit(credentials: credentials, session: URLSession.shared)

```

<span aria-hidden="true" id="user-content-transloaditkit-create-an-assembly"></span>

<span aria-hidden="true" id="create-an-assembly"></span>

### Create an Assembly

To create an `Assembly` you invoke `createAssembly(steps:andUpload:completion)` on `Transloadit`. It returns a `TransloaditPoller` that you can use to poll for the `AssemblyStatus` of your `Assembly`.

```swift
let resizeStep = Step(
    name: "resize",
    robot: "/image/resize",
    options: [
        "width": 200,
        "height": 100,
        "resize_strategy": "fit",
        "result": true])

let filesToUpload: [URL] = ...
transloadit.createAssembly(steps: [resizeStep], andUpload: filesToUpload) { result in
    switch result {
    case .success(let assembly):
        print("Retrieved \(assembly)")
    case .failure(let error):
        print("Assembly error \(error)")
    }
}.pollAssemblyStatus { result in
    switch result {
    case .success(let assemblyStatus):
        print("Received assemblystatus \(assemblyStatus)")
    case .failure(let error):
        print("Caught polling error \(error)")
    }
}

```

<span aria-hidden="true" id="user-content-transloaditkit-documentation"></span>

<span aria-hidden="true" id="documentation"></span>

## Documentation

See [GitHub⁠](https://github.com/transloadit/TransloaditKit#readme) for the full documentation.
