TanukiKit 0.5.2

TanukiKit 0.5.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017年8月
SwiftSwift 版本3.0
SPM支持 SPM

Piet Brauer 维护。



TanukiKit 0.5.2

TanukiKit

GitLab API 的 Swift 2.0 API 客户端。

名称

此名称源于 GitLab 标志 这是一个抽象的标志,代表名为 Tanuki 的 日本浣熊犬亚种。不幸的是 GitLabKit 已经被占用。

身份验证

TanukiKit 支持GitLab云和自托管GitLab。身份验证通过配置来处理。

有两种类型的配置,TokenConfigurationOAuthConfiguration

TokenConfiguration

TokenConfiguration用于基于访问令牌的身份验证(例如,用户向您提供他在网站生成的访问令牌)或通过OAuth流程获得的访问令牌。

您可以用以下方式初始化一个新的针对gitlab.com的配置:

let config = TokenConfiguration("12345")

或针对自托管的安装

let config = PrivateTokenConfiguration("12345", url: "https://gitlab.example.com/api/v3/")

在您获取了您的令牌后,您可以使用它与TanukiKit一起使用

TanukiKit(config).me() { response in
  switch response {
  case .Success(let user):
    println(user.login)
  case .Failure(let error):
    println(error)
  }
}

OAuthConfiguration

OAuthConfiguration旨在在没有访问令牌的情况下使用,用户必须登录到您的应用程序。这还处理OAuth流程。请注意,redirectURI是完全任意的,且仅因为GitLab不支持如git2go://gitlab_oauth一的redirect URIs

您可以按照以下方式对gitlab.com进行用户身份验证

let config = OAuthConfiguration(token: "<Your Client ID>", secret: "<Your Client secret>", redirect_uri: "https://oauth.example.com/gitlab_oauth")
config.authenticate()

或针对自托管的安装

let config = OAuthConfiguration("https://gitlab.example.com/api/v3/", webURL: "https://gitlab.example.com/", token: "<Your Client ID>", redirect_uri: "https://oauth.example.com/gitlab_oauth")

在您获得了配置后,您可以进行用户身份验证

// AppDelegate.swift

config.authenticate()

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
  config.handleOpenURL(url) { config in
    self.loadCurrentUser(config) // purely optional of course
  }
  return false
}

func loadCurrentUser(config: TokenConfiguration) {
  TanukiKit(config).me() { response in
    switch response {
    case .Success(let user):
      println(user.login)
    case .Failure(let error):
      println(error)
    }
  }
}

请注意,OAuth流程将提供给您一个TokenConfiguration。您必须自己存储accessToken。如果您想要进行更多请求,则无需再次执行OAuth流程。您只需使用一个TokenConfiguration

let token = // get your token from your keychain, user defaults (not recommended) etc.
let config = TokenConfiguration(token)
TanukiKit(config).user("tanuki") { response in
  switch response {
  case .Success(let user):
    println(user.login)
  case .Failure(let error):
    println(error)
  }
}

用户

获取已验证用户

TanukiKit().me() { response in
  switch response {
    case .Success(let user):
      // do something with the user
    case .Failure(let error):
      // handle any errors
  }

仓库

获取认证用户的仓库

TanukiKit().repositories() { response in
  switch response {
    case .Success(let repositories):
      // do something
    case .Failure(let error):
      // handle any errors
  }
}