13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift】QiitaAPIクライアントライブラリを作成しました

Posted at

はじめに

Swift3でQiitaAPIのクライアントライブラリを作成してみました(iOS)。
今回、APIKitを利用させて頂き手早く作ることができました。

QiitaKit

インストール方法

Carthage, CocoaPodsに対応しています。

使い方

セットアップ

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

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?