CMCKit 0.0.2

CMCKit 0.0.2

Ashwin Swaroop 维护。



CMCKit 0.0.2

  • 作者:
  • ashwinswaroop

CMCKit

CMCKit 是 CoinMarketCap 的新版 V2 API 的封装。V1 版本仍然支持,但将很快 下线。 CMC Kit 通过所有支持的端点和请求参数提供对 CoinMarketCap V2 API 的完整功能的访问。此外,它还通过使用自定义请求参数来提高可用性,提供对某些端点的访问。

特性

  • 简单易用
  • 完全用 Swift 4 开发,不依赖任何外部库
  • 提供 CoinMarketCap V2 REST API 的全部功能
  • 自定义请求参数以简化数据检索
  • Codable 序列化数据
  • 与 CoinMarketCap API 的每一次更新保持同步

要求

  • iOS 9.0+
  • Xcode 9.0+

示例

获取比特币当前价格

let apiClient = CMCClient()
apiClient.tickerByName("Bitcoin"){ response in
  switch response {
    case .success(let responseObject):
      print(responseObject.data.quotes.usd.price)
    case .failure(let error):
      print(error);
  }
}

使用方法

请参考CoinMarketCap提供的文档,了解可用的接口。

关于序列化JSON响应中对象的表示,请参阅下面的数据模型部分。

通过名称和符号获得单个标记符是本人开发的自定义请求,以便更易于数据检索。

初始化

let apiClient = CMCClient()

列表

apiClient.request(ListingsRequest()){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type ListingsResponse
    case .failure(let error):
      print(error);
  }
}

所有标记符

apiClient.request(TickersRequest()){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type TickersResponse
    case .failure(let error):
      print(error);
  }
}

按名称单个标记符

apiClient.tickerByName("Bitcoin"){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type TickerResponse
    case .failure(let error):
      print(error);
  }
}

按符号单个标记符

apiClient.tickerBySymbol("BTC"){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type TickerResponse
    case .failure(let error):
      print(error);
  }
}

按列表ID单个标记符

apiClient.request(TickerRequest(id: 1)){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type TickerResponse
    case .failure(let error):
      print(error);
  }
}

全局数据

apiClient.request(GlobalDataRequest()){ response in
  switch response {
    case .success(let responseObject):
      //use responseObject of type GlobalDataResponse
    case .failure(let error):
      print(error);
  }
}

数据模型

在所有上述情况下,响应对象由两个结构组成:**data(数据**)和**metadata(元数据**)。这些结构只是 CoinMarketCap 提供的 JSON 响应的快速对象表示。您可以在存储库中找到所有数据模型,但它们也示例如下。

顶层响应协议

public protocol CMCResponse: Codable{
    associatedtype D
    associatedtype M
    var data: D {get}
    var metadata: M {get}
}

所有不同的响应(如列表响应、行情响应、币种响应和全局数据响应)都符合 CMC 响应协议。这意味着,下面的所有数据对象和元数据对象(例如列表数据、列表元数据等)都可以通过任何类型为 CMCResponse 的响应对象的 .data 和 .metadata 属性进行引用。

列表响应

public struct ListingsData: Codable {
    public let id: Int
    public let name, symbol, websiteSlug: String
}
public struct ListingsMetadata: Codable {
    public let timestamp, numCryptocurrencies: Int
}

所有币种响应

public struct TickerData: Codable {
    public let id: Int
    public let name, symbol, websiteSlug: String
    public let rank: Int
    public let circulatingSupply, totalSupply: Double
    public let maxSupply: Double?
    public let quotes: TickerQuotes
    public let lastUpdated: Int
}
public struct TickersMetadata: Codable {
    public let timestamp, numCryptocurrencies: Int
}

单个币种响应

public struct TickerData: Codable {
    public let id: Int
    public let name, symbol, websiteSlug: String
    public let rank: Int
    public let circulatingSupply, totalSupply: Double
    public let maxSupply: Double?
    public let quotes: TickerQuotes
    public let lastUpdated: Int
}
public struct TickerMetadata: Codable {
    public let timestamp: Int
}

全局数据响应

public struct GlobalDataData: Codable {
    public let activeCryptocurrencies, activeMarkets: Int
    public let bitcoinPercentageOfMarketCap: Double
    public let quotes: GlobalDataQuotes
    public let lastUpdated: Int
}
public struct GlobalDataMetadata: Codable {
    public let timestamp: Int
}

贡献

如果您有任何关于额外自定义请求或新特性的想法,请随意发送拉取请求或创建新问题。

作者

Ashwin Swaroop

[email protected]