2025-05-27 14:32:50 +07:00

65 lines
2.7 KiB
Swift

//
// File.swift
// NetworkApi
//
// Created by User on 27.05.2025.
//
import Foundation
public final class NetworkUser: NetworkUserProtocol {
let baseUrl: BaseNetworkServiceProtocol
public init(baseUrl: BaseNetworkServiceProtocol) {
self.baseUrl = baseUrl
}
public func login(identity: String, password: String) async throws -> ServerResponseAuth {
let data = try await baseUrl.execute(path: URLS.login, method: .post, headers: Headers.headers(), parameters: [
"identity": identity,
"password": password
])
return try JSONDecoder().decode(ServerResponseAuth.self, from: data)
}
public func register(email: String, password: String, passwordConfirm: String, firstname: String, lastname: String, secondname: String, datebirthday: String, gender: String) async throws -> ServerResponseRegister {
let data = try await baseUrl.execute(path: URLS.register, method: .post, headers: Headers.headers(), parameters: [
"email": email,
"password": password,
"passwordConfirm": passwordConfirm
])
let result = try JSONDecoder().decode(ServerResponseRegister.self, from: data)
print(result.collectionId)
print(result.id)
let addUserResult = try await addUser(idUser: result.id, email: email, firstname: firstname, lastname: lastname, secondname: secondname, datebirthday: datebirthday, gender: gender)
return addUserResult
}
public func addUser(idUser: String, email: String, firstname: String, lastname: String, secondname: String, datebirthday: String, gender: String) async throws -> ServerResponseRegister {
let data = try await baseUrl.execute(path: URLS.login, method: .put, headers: Headers.headerWithToken(token: ""), parameters: [
"email" : email,
"emailVisibility" : true,
"firstname" : firstname,
"lastname" : lastname,
"secondname" : secondname,
"datebirthday" : datebirthday,
"gender" : gender
])
return try JSONDecoder().decode(ServerResponseRegister.self, from: data)
}
public func getIdToken(token: String) async throws -> String {
let data = try await baseUrl.execute(path: URLS.getIdToken, method: .get, headers: Headers.headerWithToken(token: token), parameters: ["":""])
let tokenID = try JSONDecoder().decode(ServerResponseIdToken.self, from: data)
return tokenID.items.id
}
public func deleteUser(idToken: String, token: String) async throws {
let data = try await baseUrl.execute(path: URLS.deleteUser, method: .delete, headers: Headers.headerWithToken(token: token), parameters: ["id_token":idToken])
}
}