A simple tested network library.
This library supports Swift Package Manager (installation guide).
- Get
- Post
- Patch
- Put
- Delete
To use the network manager you must import NetworkLibrary at the top of the relevant class.
This provides an AnyNetworkManager that can be stored in a property
private var anyNetworkManager: AnyNetworkManager<URLSession>which may be passed through an initializer
init<T: NetworkManagerProtocol>(networkManager: T) {
self.anyNetworkManager = AnyNetworkManager(manager: networkManager)
}The network manager can then be called with something like the following (if you have previously declared some body data and a URL)
anyNetworkManager.fetch(url: url, method: .post(body: data), completionBlock: {[weak self] res in
// process Result<Data, Error> type
}
)The network manager itself can be instantiated by using NetworkManager itself with something like: NetworkManager(session: URLSession.shared).
Even better we can use mutliple initializers to instantiate AnyNetworkManager<URLSession>?. This can be implemented with a class like the following:
final class ApiService {
private var anyNetworkManager: AnyNetworkManager<URLSession>?
init() {
self.anyNetworkManager = AnyNetworkManager()
}
init<T: NetworkManagerProtocol>(
networkManager: T
) {
self.anyNetworkManager = AnyNetworkManager(manager: networkManager)
}
}