BaseNetworkKit 1.1.2

BaseNetworkKit 1.1.2

Maintained by John Lima.



BaseNetworkKit

GitHub release Build Status CocoaPods GitHub repo size License Platform Donate

BaseNetworkKit is the easiest way to create your network layer in Swift.

❗️Requirements

  • iOS 9.3+
  • Swift 5.0+

Installation

Swift Package Manager

BaseNetworkKit is available through SPM. To install it, follow the steps:

Open Xcode project > File > Swift Packages > Add Package Dependecy

After that, put the url in the field: https://github.com/thejohnlima/BaseNetworkKit.git

CocoaPods

BaseNetworkKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'BaseNetworkKit'

and run pod install

🎓 How to use

Import library in your network layer:

import BaseNetworkKit

Setup request

enum RequesterAPI {
  // Body can be a model object conform to NKCodable
  case listOfItems(Body)
}

extension RequesterAPI: NKFlowTarget {
  // Set your api
  var baseURL: URL {
    return URL(stringValue: "https://your.api")
  }

  // Set your endpoints
  var path: String {
    switch self {
    case .listOfItems:
      return "endpoint1"
    }
  }

  // Set http methods
  var method: NKHTTPMethods {
    return .get
  }

  // Set headers if needed
  var headers: NKCommon.HTTPHeader? {
    return [
      "key1": "value2",
      "key2": "value2"
    ]
  }

  // Here you can set the tasks, like parameters
  var task: NKTask {
    switch self {
    case .listOfItems(let body):
      guard let params = body.dictionary(), !params.isEmpty else {
        return .requestPlain
      }
      return .requestParameters(params, encoding: .queryString)
    }
  }

  // You want to see the request logs, set the environment to develop
  var environment: NKEnvironment {
    return .develop
  }
}

Than, create a request function

class Service: NKBaseService<RequesterAPI> {
  func fetchItems(page: Int, limit: Int, completion: @escaping NKCommon.ResultType<Model>) {
    let requestModel = ModelRequest(offset: "\(page)", limit: "\(limit)")
    fetch(.listOfItems(requestModel), dataType: Model.self, completion: completion)
  }
}

If you need more examples, open demo project.

🙋🏻‍ Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request. 👨🏻‍💻

📜 License

BaseNetworkKit is under MIT license. See the LICENSE file for more info.