KKBOX Open-API Swift SDK Promises 扩展

版权所有 2018-2019 KKBOX Technologies Limited

以 Promise 的方式使用 KKBOX 的 Swift SDK。

Actions Status

简介

本项目通过采用 Google 的 Promises 库扩展了 KKBOX 的 Open API Swift SDK。它提供了一种进行异步 API 调用的替代方法。

安装

目前只能使用 Swift Package Manager 安装此扩展。请将以下内容添加到

// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "YourTargetName",
    products: [
        .executable(name: "YourTargetName", targets: ["YourTargetName"])
    ],
    dependencies: [
        .package(url: "https://github.com/KKBOX/OpenAPI-Swift-Promises", .upToNextMinor(from: "1.0.0"))
    ],
    targets: [
        .target(name: "YourTargetName", dependencies: ["KKBOXOpenAPISwift"], path: "./Path/To/Your/Sources")
    ]
)

您的 Package.swift 文件中。然后在命令行下运行 swift package update

用法

在使用 KKBOX 的 Open API Swift SDK 时,您可能会编写像这样的嵌套回调处理代码

_ = try? self.API.fetchAccessTokenByClientCredential { result in
    switch result {
    case .error(let error):
        print("\(error.localizedDescription)")
    case .success(_):
        _ = try? self.API.fetch(track: "4kxvr3wPWkaL9_y3o_") { result in
            switch result {
            case .error(let error):
                print("\(error.localizedDescription)")
            case .success(let track):
                print("\(track)")
            }
        }
    }
}

Promises 解决了回调地狱。添加此扩展后,您可以将上面的代码写成这样

self.API.fetchAccessTokenByClientCredential().then { _ in
    return self.API.fetch(track: "4kxvr3wPWkaL9_y3o_")
} .then { track in
    print("\(track)")
} .catch { error in
    print("\(error.localizedDescription)")
}

许可协议

版权所有 2018-2019 KKBOX Technologies Limited

根据 Apache License,版本 2.0(“许可证”)获得许可;除非遵守许可证的规定,否则您不得使用此文件。您可以在以下位置获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据“按原样”的基础分发的软件不附带任何形式的担保或条件,无论是明示的还是暗示的。请参阅许可证以了解有关权限和限制的特定语言。