Skip to content

stevencurtis/NetworkManager

Repository files navigation

NetworkLibrary

A simple tested network library.

Installation

This library supports Swift Package Manager (installation guide).

Functionality

  • 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)
    }
}

Guide

There is an accompanying guide on Medium

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages