Skip to content

Instantly share code, notes, and snippets.

@pffan91
Created May 15, 2017 11:22
Show Gist options
  • Save pffan91/c74983d7e8fa810a72895f6758230fe0 to your computer and use it in GitHub Desktop.
Save pffan91/c74983d7e8fa810a72895f6758230fe0 to your computer and use it in GitHub Desktop.
NetworkLayerWithMoya
// Created by Vladyslav Semenchenko on 15/05/2017.
// Copyright © 2017 Vladyslav Semenchenko. All rights reserved.
import Foundation
import Moya
// 1:
enum MyServerAPI {
// MARK: - Cameras
case cameras
case settingsFor(cameraId: String)
// MARK: - User
case createUser(email: String, password: String)
}
// 2:
extension MyServerAPI: TargetType {
// 3:
var baseURL: URL { return URL(string: "https://testing.myserver.com/api/v1")! }
// 4:
var path: String {
switch self {
case .cameras:
return "/cameras"
case .settingsFor(let cameraId):
return "/cameras/\(cameraId)/settings"
case .createUser:
return "/user"
}
}
// 5:
var method: Moya.Method {
switch self {
case .createUsr:
return .post
default:
return .get
}
}
// 6:
var parameters: [String: Any]? {
switch self {
case .createUser(let email, let password):
var parameters = [String: Any]()
parameters["email"] = email
parameters["password"] = password
return parameters
default:
return nil
}
}
// 7:
var parameterEncoding: ParameterEncoding {
return JSONEncoding.default
}
// 8:
var sampleData: Data {
return Data()
}
// 9:
var task: Task {
return .request
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment