はじめに
Swift3でQiitaAPIのクライアントライブラリを作成してみました(iOS)。
今回、APIKitを利用させて頂き手早く作ることができました。
QiitaKit
インストール方法
使い方
セットアップ
Qiita設定ページで登録したアプリケーションのClientID, ClientSecretを設定してください。
import UIKit
import QiitaKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let clientID = "xxxx"
let clientSecret = "xxxx"
AuthManager.sharedManager.setup(
clientID: clientID,
clientSecret: clientSecret)
return true
}
OAuth
本ライブラリはOAuth認証にも対応しています。QiitaAPIでは一部エンドポイントは認証なしでも利用できますが、認証している状態ではユーザごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までという制限があるため、アプリ等で利用する場合は認証を行ったほうが良いと思います。
import QiitaKit
// 認証済み判定
let authorized: Bool = AuthManager.sharedManager.authorized
/*
OAuth認証を行う。認証を行うためのWindowが表示されます
- parameter scopes: アプリで利用可能なスコープ
- readQiita: Qiitaからアクセストークンに紐付いたユーザに関連したデータを読み出す
- readQiitaTeam: Qiita:Teamからデータを読み出す
- writeQiita: Qiitaにデータを書き込む
- writeQiitaTeam: Qiita:Teamにデータを書き込む
- parameter redirectURL: 登録アプリケーションで設定したリダイレクト先のURL
- parameter webViewType: OAuth認証を行うWebViewの種類
- parameter completion: 認証後に呼ばれるハンドラ
*/
AuthManager.sharedManager.authorize(withScopes: scopes,
redirectURL: redirectURL,
webViewType: .uiWebView)
{ result in
switch result {
case .Success:
// 認証成功
case .Failure(let error):
// 認証失敗
}
}
リクエスト
QiitaAPIの各種リクエストに対応ています。リクエストに対して対応するレスポンスオブジェクトが返ってくるタイプセーフな作りになっています。
import QiitaKit
import APIKit
import Result
// 認証中ユーザ情報を取得するリクエストオブジェクト
let request = QiitaAPI.User.GetAuthenticatedUserRequest()
// リクエスト送信
Session.sendRequest(request) { result in
switch result {
case .Success(let authenticatedUser):
print(authenticatedUser)
case .Failure(let error):
print(error)
}
}
さいごに
QiitaTeam向けリクエストなど一部リクエストは動作確認できていないので、不具合などあればPullRequestお待ちしています。
https://github.com/ykyouhei/QiitaKit