Harbor 0.1.2

Harbor 0.1.2

Javier Manzo维护。



Harbor 0.1.2

Swift Platforms CocoaPods Compatible Swift Package Manager

Harbor

Harbor是一个简单的基于Swift的异步/等待进行API请求的库。

要求

  • Swift 5
  • iOS 13.0

安装

您可以使用CocoaPodsSwift Package Manager将Harbor添加到项目中。

CocoaPods

将以下行添加到您的Podfile中

pod 'Harbor'

Swift Package Manager

将以下内容添加到您的Package.swift文件中

dependencies: [
    .package(url: "https://github.com/javiermanzo/Harbor.git")
]

使用方法

要使用Harbor进行请求,如果您需要解析响应,您需要创建一个实现了HServiceProtocolWithResult协议的类,或如果响应不需要解析,则创建一个实现了HServiceProtocol的类。

服务协议

HServiceProtocol

class MyRequest: HServiceProtocol {
    
    var url: String = "YOUR_URL/{PATH_PARAM}"
    
    var httpMethod: HHttpMethod = .post
    
    var headers: [String : String]?
    
    var queryParameters: [String : String]? = nil
    
    var pathParameters: [String : String]? = nil
    
    var body: [String : Any]? = nil
    
    var needAuth: Bool = true
    
    var timeout: TimeInterval = 5
    
    init() {
        self.pathParameters = [
            "PATH_PARAM" : "value"
        ]
        
        self.body = [
            "bodyParameter" : "value"
        ]
        
        self.headers = [
            "header" : "value"
        ]
    }
}

HServiceProtocolWithResult

class MyRequestWithResult: HServiceProtocolWithResult {
    
    typealias T = MyModel
    
    var url: String = "YOUR_URL/{PATH_PARAM}"
    
    var httpMethod: HHttpMethod = .get
    
    var headers: [String : String]?
    
    var queryParameters: [String : String]? = nil
    
    var pathParameters: [String : String]? = nil
    
    var body: [String : Any]? = nil
    
    var needAuth: Bool = true
    
    var timeout: TimeInterval = 5
    
    init() {
        self.pathParameters = [
            "PATH_PARAM" : "value"
        ]
        
        self.queryParameters = [
            "queryParameter" : "value"
        ]
        
        self.headers = [
            "header" : "value"
        ]
    }
}

创建请求类后,您可以调用request方法来执行请求。

Task {
     let response = await MyRequestWithResult().request()
}

响应

HResponse

如果您使用HServiceProtocol,调用request()的结果将是一个HResponse枚举。

switch response {
case .success:
     break
case .cancelled:
     break
case .error(let error):
     break
}

HResponseWithResult

如果您使用HServiceProtocolWithResult,调用request()的结果将是一个HResponseWithResult枚举。

switch response {
case .success(let result):
     break
case .cancelled:
     break
case .error(let error):
     break
}

身份验证提供者

如果您需要处理身份验证,也可以实现HAuthProviderProtocol协议。

通过将setAuthProvider方法设置到Harbor类中,以设置身份验证提供者。

之后,您必须创建一个实现了HAuthProviderProtocol的类。

class MyAuthProvider: HAuthProviderProtocol {
    func getCredentialsHeader() -> [String : String] {
        // Return the authentication headers
    }
}

之后,您必须设置您的Auth提供者

Harbor.setAuthProvider(MyAuthProvider())

如果请求类中将needAuth属性设置为true,Harbor将在执行请求之前调用身份验证提供者的getCredentialsHeader方法来获取身份验证头。

取消请求

您可以在请求正在运行时取消请求的任务。《request()`将返回 cancelled.

let task = Task {
    let response = await MyRequestWithResult().request()
}
task.cancel()

调试

您可以使用HDebugServiceProtocol协议打印关于您请求的调试信息。在请求类中实现该协议。

class MyRequest: HServiceProtocolWithResult, HDebugServiceProtocol {
    var  debugType: HDebugServiceType = .requestAndResponse
    
    ....
}

debugType定义了您要在控制台中打印的内容。选项是none, request, response or requestAndResponse

当您的请求被调用时,您将看到Xcode控制台上有关您的请求的信息。

贡献

如果您遇到任何问题,请提交问题。《pull requests也受欢迎!

作者

Harbor是由Javier Manzo创建的。

许可证

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