HermesNetwork is the concrete implementation of an isolated/testable networking layer written in Swift.
Current version is based upon the network architecture design described in: "Network Layers in Swift (Updated)" written by me.
While the theory behind this approach is independent from the tool used, in order to give a complete out-of-box approach I’ve used the following libraries:
- Networking support: in this example the Service implementation uses Alamofire. Switching to
NSURLSession
is pretty easy and, in fact, suggested. - Async/Promise support: I love promises (at least until we’ll get something better with Swift 5) because they are clean, simple and offer a strong error handling mechanism. Our networking layer uses Hydra, that recently hits the 1.0 milestone.
- JSON: The higher level (near your app) of the architecture offer out-of-box JSON support with
JSONOperation
class: everything about JSON was offered by SwiftyJSON, probability the best library for these stuff.
You can install Swiftline using CocoaPods, carthage and Swift package manager
use_frameworks!
pod 'HermesNetwork'
github 'malcommac/HermesNetwork'
Add swiftline as dependency in your Package.swift
import PackageDescription
let package = Package(name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/malcommac/HermesNetwork.git", majorVersion: 0),
]
)