65 lines
2.7 KiB
Swift
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])
|
|
}
|
|
|
|
|
|
}
|