mirror of
https://github.com/luxfi/safe-ios.git
synced 2026-10-30 15:19:20 +00:00
43 lines
1.2 KiB
Swift
43 lines
1.2 KiB
Swift
//
|
|
// SafeGelatoRelayService.swift
|
|
// Multisig
|
|
//
|
|
// Created by Vitaly on 05.03.23.
|
|
// Copyright © 2023 Gnosis Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class SafeGelatoRelayService {
|
|
|
|
var url: URL
|
|
|
|
private let httpClient: JSONHTTPClient
|
|
private let mockHttpClient: MockJSONHttpClient
|
|
|
|
var jsonDecoder: JSONDecoder {
|
|
httpClient.jsonDecoder
|
|
}
|
|
|
|
init(url: URL, logger: Logger) {
|
|
self.url = url
|
|
httpClient = JSONHTTPClient(url: url, logger: logger)
|
|
httpClient.jsonDecoder.dateDecodingStrategy = .millisecondsSince1970
|
|
mockHttpClient = MockJSONHttpClient()
|
|
}
|
|
|
|
@discardableResult
|
|
func execute<T: JSONRequest>(request: T) throws -> T.ResponseType {
|
|
try httpClient.execute(request: request)
|
|
}
|
|
|
|
func asyncExecute<T: JSONRequest>(request: T, completion: @escaping (Result<T.ResponseType, Error>) -> Void) -> URLSessionTask? {
|
|
httpClient.asyncExecute(request: request, completion: completion)
|
|
}
|
|
|
|
// Returns mocked response in completion
|
|
func asyncExecuteMock<T: JSONRequest>(request: T, completion: @escaping (Result<T.ResponseType, Error>) -> Void) -> URLSessionTask? {
|
|
mockHttpClient.asyncExecute(request: request, completion: completion)
|
|
}
|
|
}
|