git.iko.soy/dashared/hookah-tau
on develop help sign in
Добавлены все резолверы авторизации
efa80cdDarya Rednikina
Hookah Tau/API/APIClient.swift+1
@@ -9,6 +9,7 @@
9import Foundation
9import Foundation
10import Alamofire
10import Alamofire
11
11
12+/// http://iko.soy/hookah-tau-docs/latest/index.html
12class APIClient {
13class APIClient {
13 typealias CompletionBlock = (Result<Codable, Error>) -> Void
14 typealias CompletionBlock = (Result<Codable, Error>) -> Void
14
15
Hookah Tau/API/Authorization api/AuthorizationService.swift+48−5
@@ -16,10 +16,10 @@ class AuthorizationService {
16 self.apiClient = apiClient
16 self.apiClient = apiClient
17 }
17 }
18
18
19+ /// Check if phone number is registered and send verification code to that number.
19 func authenticate(withPhone phoneNumber: String,
20 func authenticate(withPhone phoneNumber: String,
20 completion: @escaping (Result<Bool, Error>) -> Void) {
21 completion: @escaping (Result<Bool, Error>) -> Void) {
21 let resolver = AuthResolver(phoneNumber: phoneNumber)
22 let resolver = AuthResolver(phoneNumber: phoneNumber)
22−
23 let request = ApiRequest(resolver: resolver, httpMethod: .post)
23 let request = ApiRequest(resolver: resolver, httpMethod: .post)
24
24
25 apiClient.load(request: request.request) { (result) in
25 apiClient.load(request: request.request) { (result) in
@@ -42,11 +42,54 @@ class AuthorizationService {
42 }
42 }
43 }
43 }
44
44
45+ /// Verify login of **already existing user** with phone number and verification code.
45− func phonecode() {
46+ func phonecode(phoneNumber: String,
47+ code: String,
48+ completion: @escaping (Result<User, Error>) -> Void) {
46− //let resolver = PhoneCodeResolver()
49+ let resolver = PhoneCodeResolver(phoneNumber: phoneNumber, code: code)
50+ let request = ApiRequest(resolver: resolver, httpMethod: .post)
51+
52+ apiClient.load(request: request.request) { result in
53+ switch result {
54+ case .failure(let err):
55+ completion(.failure(err))
56+ case .success(let data):
57+ guard
58+ let unwrappedData = data as? Data,
59+ let decodedData = resolver.targetClass().fromJSONToSelf(data: unwrappedData) as? User
60+ else {
61+ completion(.failure(ServerError.decodeError))
62+ return
63+ }
64+
65+ completion(.success(decodedData))
66+ }
67+ }
47 }
68 }
48
69
70+
71+ /// Register new user with a given name, phone number and verification code.
49− func register() {
72+ func register(name: String,
73+ code: String,
74+ phoneNumber: String, completion: @escaping (Result<User, Error>) -> Void) {
50− //let resolver = RegistrationResolver()
75+ let resolver = RegistrationResolver(name: name, code: code, phoneNumber: phoneNumber)
76+ let request = ApiRequest(resolver: resolver, httpMethod: .post)
77+
78+ apiClient.load(request: request.request) { result in
79+ switch result {
80+ case .failure(let err):
81+ completion(.failure(err))
82+ case .success(let data):
83+ guard
84+ let unwrappedData = data as? Data,
85+ let decodedData = resolver.targetClass().fromJSONToSelf(data: unwrappedData) as? User
86+ else {
87+ completion(.failure(ServerError.decodeError))
88+ return
89+ }
90+
91+ completion(.success(decodedData))
92+ }
93+ }
51 }
94 }
52}
95}
Hookah Tau/API/ServerError.swift+1
@@ -11,4 +11,5 @@ import Foundation
11
11
12enum ServerError: Error {
12enum ServerError: Error {
13 case internalServerError
13 case internalServerError
14+ case decodeError
14}
15}