Buya 1.0.5

Buya 1.0.5

Erik BasarginKirill SaltykovAlexey Voronov维护。



Buya 1.0.5

Buya Build Status Version codebeat badge codecov

网络抽象框架

功能特点

  • 接口与Moya相同
  • Alamofire抽象层
  • 包含:AccessTokenPlugin、RefreshTokenPlugin、AccessRecoveryPlugin

安装

CocoaPods

对于Buya,在Podfile中使用以下配置:

pod 'RxSwift', '~> 4.5'
pod 'RxCocoa', '~> 4.5'
pod 'Buya', '~> 1.0'

然后运行pod install

在任何你想使用 Buya 的文件中,别忘了用 import Buya 导入框架。

使用方法

使用 Buya 非常简单。你可以像这样访问一个 API:

authorizationProvider
    .request(Authorization.getData)
    .map(YourCodableStruct.self)
    .subscribe(
        onSuccess: { (data) in
            /// Doing something with data
        },
        onError: { (error) in
            print(error.localizedDescription)
        }
    )
    .disposed(by: self.disposeBag)

要这样做,你必须实现以下内容:

typealias AuthorizationProvider = Buya.Provider<Authorization>

enum Authorization {
    /// Authorization
    case authorize

    /// Return data
    case getData
}

extension Authorization: EndpointType, Buya.RefreshTokenApply {
    var path: String {
        switch self {
        case Authorization.authorize:
            return "/authorize"
            
        case Authorization.getData:
            return "/getData"
        }
    }
    
    var requestType: RequestType {
        switch self {
        case Authorization.authorize:
            return RequestType.post
        case Authorization.getData:
            return RequestType.get
        }
    }
    
    var requestInfo: RequestInfo {
        switch self {
        case let Authorization.authorize(login, password):
            let query = [
                "login" : login,
                "password": password
            ]
            return RequestInfo.query(parameters: query)
            
        case Authorization.getData:
            return RequestInfo.none
        }
    }

    var headers: [String : String]? {
        return [
            "Content-Type": "application/json",
            "Accept": "application/json"
        ]
    }
    
    var refreshTokenApply: Bool {
        switch self {
        case Authorization.getData: return true
        default:
            return false
        }
    }
}

许可证

RStorage 在 MIT 许可证下发布。更多信息请见 LICENSE