https://github.com/malcommac/HermesNetwork
https://github.com/malcommac/HermesNetwork
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/malcommac/HermesNetwork
- Owner: malcommac
- License: mit
- Archived: true
- Created: 2017-09-10T15:33:34.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-07-29T13:57:49.000Z (almost 8 years ago)
- Last Synced: 2024-10-27T10:39:49.228Z (over 1 year ago)
- Language: Swift
- Size: 57.6 KB
- Stars: 72
- Watchers: 10
- Forks: 20
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# HermesNetwork
[](https://github.com/Carthage/Carthage) [](https://travis-ci.org/malcommac/HermesNetwork) [](http://cocoadocs.org/docsets/HermesNetwork) [](http://cocoadocs.org/docsets/HermesNetwork) [](http://cocoadocs.org/docsets/HermesNetwork)
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)**"](http://danielemargutti.com/2017/09/09/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](https://github.com/Alamofire/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](https://github.com/malcommac/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](https://github.com/SwiftyJSON/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),
]
)
```