her

HermesNetwork

This project aims to show how to write an isolated and testable networking layer in Swift. Original article can be found in README file.'

Showing:

Popularity

Downloads/wk

0

GitHub Stars

75

Maintenance

Last Commit

4yrs ago

Contributors

1

Package

Dependencies

3

License

MIT

Categories

Readme

HermesNetwork

Carthage compatible CI Status Version License Platform

HermesNetwork is the concrete implementation of an isolated/testable networking layer written in Swift.

Architecture Design

Current version is based upon the network architecture design described in: "Network Layers in Swift (Updated)" written by me.

Used Libraries

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.

Installation

You can install Swiftline using CocoaPods, carthage and Swift package manager

CocoaPods

use_frameworks!
pod 'HermesNetwork'

Carthage

github 'malcommac/HermesNetwork'

Swift Package Manager

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),
]
)

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100