Select Git revision
utils_test.go
XXNetwork.swift 3.16 KiB
import Shared
import XXLogger
import Keychain
import Foundation
import DependencyInjection
public enum NetworkEnvironment {
case mainnet
}
public protocol XXNetworking {
var hasClient: Bool { get }
func writeLogs()
func purgeFiles()
func updateErrors()
func newClient(ndf: String) throws -> Client
func loadClient(with: Data) throws -> Client
func updateNDF(_: @escaping (Result<String, Error>) -> Void)
}
public struct XXNetwork<B: BindingsInterface> {
// MARK: Injected
@Dependency private var logger: XXLogger
@Dependency private var keychain: KeychainHandling
// MARK: Lifecycle
public init() {}
}
extension XXNetwork: XXNetworking {
public var hasClient: Bool {
guard let files = FileManager.xxContents else { return false }
return files.count > 0
}
public func writeLogs() {
B.listenLogs()
}
public func updateErrors() {
B.updateErrors()
}
public func updateNDF(_ completion: @escaping (Result<String, Error>) -> Void) {
B.updateNDF(for: .mainnet) {
switch $0 {
case .success(let data):
guard let ndfData = data, let ndf = String(data: ndfData, encoding: .utf8) else {
completion(.failure(NSError.create("NDF is empty (?)")))
return
}
completion(.success(ndf))
case .failure(let error):
completion(.failure(error))
}
}
}
public func purgeFiles() {
FileManager.xxCleanup()
}
public func newClient(ndf: String) throws -> Client {
var password: Data!
if hasClient == false {