Swiftpack.co -  Package - zsteed/NobleNetworking
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
iOS Networking simplified with operations.
.package(url: "https://github.com/zsteed/NobleNetworking.git", from: "1.0.1")

This networking class has 2 different ways of sending network requests

1. NetworkRequest

// Basic HTTP GET request

let request = NetworkRequest(endpoint: "https://www.google.com")
request.getData { result in

Network request supports GET, DELETE, PUT, POST, MULTIFORM

Easy AF network response parsing.

let request = NetworkRequest(endpoint: "https://www.google.com")

request.getData { result in
    switch result {
    case .success(let response):
        let data: Data? = response.data
        let lines: [String] = response.dataAsCSV()
        let json: [String: Any] = response.dataAsJSON()
        let foo: Foo = responseDataAsDecodable(Foo.self)
        let httpResponse: HTTPURLResponse = response.httpResponse
        let url: URL? = response.url
    case .failure(let error):
        let httpResponse: HTTPURLResponse = error.httpResponse
        let error: Error = error.httpError
        // Local enum for simple http status viewing
        let status: HTTPStatus = error.httpStatus

// Simple Multipart example

let req = NetworkRequest(endpoint: "www.google.com")

let values: [MultipartValues] = [MultipartValues(keyName: "file", 
                                                 fileName: "myImage", 
                                                 data: Data(),
                                                 mimetype: .png)]
req.postMultipart(multipartValues: values) { result in

2. NetworkOperation

// Create request to pass into your operation
let request = NetworkRequest(endpoint: "www.github.com")

let operation = NetworkOperation(httpMethod: .POST(payload), request: request) { result in


NetworkOperation is built on top of OperationQueue


  1. Implicitly ignores duplicate entries
  2. Queue ( handles not overloading the system )
  3. Quality of service ( Range of UserInitiated vs utility )
  4. Dependency chaining ( ie other operations )
  5. Will retry failed operation 3 times
  6. If subclassed, will attempt to restore if http status code is 401

Here is an example of dependencies with operations

  func specialOperation1() -> NetworkOperation {}
  func sweetOperation2() -> NetworkOperation {}
  // Create a DoneOperation with any dependent operations you want linked.
  let doneOperation = DoneOperation(dependentOperations: [

  // This "execute" begins all "dependent" operations and wait for a response 
  doneOperation.execute { success in

Handling Authentication

Want the operation class to handle restoring your Authentication session if a 401 is received? Great, then subclass NetworkOperation and override this method.

  class AuthNetworkOperation: NetworkOperation {
    override func restoreSession(error: NetworkError, 
                                 completion: @escaping (Bool) -> Void) {

      // Go try and re-authenticate
      YourAuthClass.Authenticate() { // Or whatever you name it
        // Call the closure passing a success or failure

      // Now every `AuthNetworkOperation` will try 3 times to restore the session for you AND complete the original network call
      // Yay!



Stars: 0
Last commit: 3 weeks ago

Release Notes

3 weeks ago

Readme updates and small naming updates.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco