git.iko.soy/dashared/hookah-tau
on develop help sign in
Добавлены все резолверы авторизации
commitefa80cdc2e16b190e1e8fe69d7090b0d70370fb7 authorDarya Rednikina <rednikina.com@yandex.ru> dateTue 29 Oct 2019, 12:19 (7 years ago) parent71c4b41
3 files changed+50−5
Hookah Tau/API/APIClient.swift+1 Hookah Tau/API/Authorization api/AuthorizationService.swift+48−5 Hookah Tau/API/ServerError.swift+1
Hookah Tau/API/APIClient.swift+1
@@ -9,6 +9,7 @@
99import Foundation
1010import Alamofire
1111
12+/// http://iko.soy/hookah-tau-docs/latest/index.html
1213class APIClient {
1314 typealias CompletionBlock = (Result<Codable, Error>) -> Void
1415
Hookah Tau/API/Authorization api/AuthorizationService.swift+48−5
@@ -16,10 +16,10 @@ class AuthorizationService {
1616 self.apiClient = apiClient
1717 }
1818
19+ /// Check if phone number is registered and send verification code to that number.
1920 func authenticate(withPhone phoneNumber: String,
2021 completion: @escaping (Result<Bool, Error>) -> Void) {
2122 let resolver = AuthResolver(phoneNumber: phoneNumber)
22−
2323 let request = ApiRequest(resolver: resolver, httpMethod: .post)
2424
2525 apiClient.load(request: request.request) { (result) in
@@ -42,11 +42,54 @@ class AuthorizationService {
4242 }
4343 }
4444
45− func phonecode() {
46− //let resolver = PhoneCodeResolver()
45+ /// Verify login of **already existing user** with phone number and verification code.
46+ func phonecode(phoneNumber: String,
47+ code: String,
48+ completion: @escaping (Result<User, Error>) -> Void) {
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+ }
4768 }
4869
49− func register() {
50− //let resolver = RegistrationResolver()
70+
71+ /// Register new user with a given name, phone number and verification code.
72+ func register(name: String,
73+ code: String,
74+ phoneNumber: String, completion: @escaping (Result<User, Error>) -> Void) {
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+ }
5194 }
5295}
Hookah Tau/API/ServerError.swift+1
@@ -11,4 +11,5 @@ import Foundation
1111
1212enum ServerError: Error {
1313 case internalServerError
14+ case decodeError
1415}