Last active
July 8, 2019 06:19
-
-
Save satishbabariya/138629a7c2fcd597608833b3e09fd7b2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Resty | |
struct Todo: Codable { | |
let id: Int | |
let title: String | |
let completed: Bool | |
} | |
enum FakeAPI: Resty { | |
case todos | |
// other endpoints | |
} | |
extension FakeAPI { | |
var host: String { | |
return "https://jsonplaceholder.typicode.com/" | |
} | |
var path: String { | |
return "" | |
} | |
var endpoint: String { | |
switch self { | |
case .todos: | |
return "todos" | |
} | |
} | |
var method: HTTPMethod { | |
switch self { | |
case .todos: | |
return .get | |
} | |
} | |
var parameters: [String: Any]? { | |
return nil | |
} | |
var headers: [String: String]? { | |
return nil | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
enum MyService { | |
case zen | |
case showUser(id: Int) | |
case createUser(firstName: String, lastName: String) | |
case updateUser(id: Int, firstName: String, lastName: String) | |
case showAccounts | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MARK: - Resty Protocol Implementation | |
extension MyService: Resty { | |
var host: String { | |
return "https://jsonplaceholder.typicode.com/" | |
} | |
var path: String { | |
return "" | |
} | |
var endpoint: String { | |
switch self { | |
case .zen: | |
return "/zen" | |
case .showUser(let id), .updateUser(let id, _, _): | |
return "/users/\(id)" | |
case .createUser(_, _): | |
return "/users" | |
case .showAccounts: | |
return "/accounts" | |
} | |
} | |
var method: HTTPMethod { | |
switch self { | |
case .zen, .showUser, .showAccounts: | |
return .get | |
case .createUser, .updateUser: | |
return .post | |
} | |
} | |
var parameters: [String: Any]? { | |
return nil | |
} | |
var headers: [String: String]? { | |
return ["Content-type": "application/json"] | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FakeAPI.todos.request(type: [Todo].self) { result in | |
switch result { | |
case let .success(todos): | |
// Array of [Todo] | |
case let .failure(error): | |
// error | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MyService.zen.request(type: [Todo].self) { result in | |
switch result { | |
case let .success(todos): | |
// Array of [Todo] | |
case let .failure(error): | |
// error | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment