CreatuNetwork 0.2.1

CreatuNetwork 0.2.1

Mohan Singh Thagunna维护。



 
依赖项
RxSwift>= 0
RxCocoa>= 0
Moya/RxSwift>= 0
ReachabilitySwift>= 0
 

CreatuNetwork

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install

要求

  • Swift 4或更高版本
  • 目标IOS 10或更高版本

链接库

  • Alamofire (4.7.0)
  • KeychainSwift (10.0.0)
  • Moya (11.0.1)
  • ReachabilitySwift (4.1.0)
  • Result (3.2.4)
  • RxCocoa (4.1.2)
  • RxSwift (4.1.2)

安装

CreatuNetwork 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'CreatuNetwork'

API 模型

在您的 API 中添加扩展 ApiTargetType

import Foundation
import Moya
import CreatuNetwork

enum UserApi {
    case login([String: Any])
    case logout([String: Any])
    case register([String: Any])
}

extension UserApi: ApiTargetType {
    var checkTokenValidity: Bool {
        return false
    }

    var baseURL: URL {
        return URL(string: "{{ YOUR-BASE-URL-HERE }}")!
    }

    var path: String {
        switch self {
        case .register:
            return "{{ REGISTER }}"
        case .login:
            return "{{ LOGIN}}"
        case .logout:
            return "{{ LOGOUT }}"
        }
    }

    var method: Moya.Method {
        switch self {
        case .register,
             .login,
             .logout:
            return .post
        }
    }

    var sampleData: Data {
        return Data()
    }

    var task: Task {
        switch self {
        case .register(let parameters),
             .login(let parameters),
             .logout(let parameters):
            return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
        }
    }

    var headers: [String: String]? {
        return ["Accept": "application/json"]
    }

    var authTokenType: AuthHeaderType {
        switch self {
        case .login:
            return .basic
        case .register,
             .logout:
            return .bearer
        }
    }
}

请求

  • 请求
Network.request(UserApi.login(["username": "{{ USERNAME }}", "password": "{{ PASSWORD }}"])).subscribe(onNext: {(response) in
                    debugPrint(response)
                }, onError: { (error) in
                    debugPrint(error)
                }).disposed(by: bag)
  • 网络检查
Network.available() -> Bool // true if netowk available

响应

  • 响应模型
    var shouldTokenRefresh = false // true if your token out of date and you need to refresh token 
    var response: Any? // your response data
    var message: String? // error message
    var success = true // true if your request successfully completed

基于令牌的生命周期

  • 如果自定义授权头
Authorize.customHeader {get set}
  • 获取访问令牌
Authorize.accessToken {get}
  • 获取刷新令牌
Authorize.refreshToken {get}
  • 获取授权模型
Authorize.authorizeModel { get }
  • 使用客户端 ID 和客户端密钥设置访问令牌
Authorize.setAccessToken(_ clientId: String, clientSecret: String) -> Bool
  • 使用令牌字符串设置 access token
Authorize.setAccessToken(_ token: String) -> Bool
  • 清除所有保存的授权数据
Authorize.clearSavedData() -> Bool
  • 更新授权模型
Authorize.updateAuthorize(_ authorize: AuthorizeModel) -> Bool
  • 使用 JSON 更新授权模型
Authorize.updateAuthorize(_ authorize: [String: Any]) -> Bool 

作者

mohansinghthagunna, [email protected]

许可证

CreatuNetwork 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。