CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

FOTask 0.2.1

FOTask 0.2.1

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Feb 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by Fernando Ortiz.



FOTask 0.2.1

  • By
  • fmo91

FOTask

Introduction

FOTask is a microframework (less than 100 LOCs), with a single objective in mind: separation of concerns. Every subclass of Task executes an action. Tasks can be composed in more complex Tasks, or parallelized without effort.

Example usage

Suclassing Task:

final class GetUserTask<Int, Task> {
    override func perform(_ input: Int, onSuccess: @escaping (String) -> Void, onError: @escaping (Error) -> Void) {
        ApiClient("https://somecoolapi.com/users/\(input)", .get,
            onSuccess: { (json: Any) in
                onSuccess(User(json: json))
            }, 
            onError: { (error: Error) in
                onError(error)
            }
        ) 
    }
}

Using Task:

let getUserTask = GetUserTask()

getUserTask.perform(3,
    onSuccess: { (user: User) in
        print(user.name)
    },
    onError: { (error: Error) in
        print("An error ocurred.")
    }
)

Composing Tasks:

let getUserWithIDTask = GetUserTask()
let getPostsFromUserTask = GetPostsFromUserTask()

let getPostsFromUserID = getUserWithIDTask => getPostsFromUserTask

getPostsFromUserID.perform(3,
    onSuccess: { (posts: [Post]) in
        print(posts.count)
    },
    onError: { (error: Error) in
        print("An error ocurred.")
    }
)

Parallelize Tasks

let getALotOfUserNames = Task.parallel(
    [
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName(),
        GetUserName()
    ],
    reduce: { (userNames: [String]) -> [String] in
        return userNames
    }
)

getALotOfUserNames.perform(Void(),
    onSuccess: { userNames in
        print(userNames)
    },
    onError: { error in
        print("An Error!")
    }
)

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • iOS 8.0 or above.
  • Swift 3.0 or above.

Installation

FOTask is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "FOTask"

Coming soon

  • An explanatory Medium post
  • More documentation
  • More examples
  • More functional features?

Author

fmo91, [email protected]

License

FOTask is available under the MIT license. See the LICENSE file for more info.