Files
Ilya Puchka 3ada18d756 Swift 3 (#120)
Swift 3 migration
2016-09-11 11:01:02 +02:00

37 lines
870 B
Swift

//
// NetworkLayer.swift
// Dip
//
// Created by Olivier Halligon on 10/10/2015.
// Copyright © 2015 AliSoftware. All rights reserved.
//
import Foundation
enum NetworkResponse {
case Success(Data, HTTPURLResponse)
case Error(NSError)
func unwrap() throws -> (Data, HTTPURLResponse) {
switch self {
case .Success(let data, let response):
return (data, response)
case .Error(let error):
throw error
}
}
func json<T>() throws -> T {
let (data, _) = try self.unwrap()
let obj = try JSONSerialization.jsonObject(with: data, options: [])
guard let json = obj as? T else {
throw SWAPIError.InvalidJSON
}
return json
}
}
protocol NetworkLayer {
func request(path: String, completion: @escaping (NetworkResponse) -> Void)
}