見出し画像

WakaTime apiを使って特定のProjectのcommitsを取得する

この記事の対象者

  • WakaTime APIについて日本語で知りたい人

  • 実際にWakaTime APIのJavaScriptで動くコードを読みたい人


commits取得までの流れ

  • WakaTimeのサイトで各種設定をする

  • 認証コードを取得する

  • 認証コードを使ってアクセストークンを取得する

  • アクセストークンを使ってcommitsを取得するエンドポイントにアクセスする

WakaTimeのサイトで各種設定をする

にアクセスして、Create an appを選択

Create a new App ボタンを選択

App Nameを入力し、Create Appボタンを選択

テキストボックスに値を入力しSave

  • Publisher Website

    • このAPIはどういった用途で使われているかなどを記載したWebsiteのURL

  • Install URL

    • WakaTimeの統合を説明するページのURL、認証ページのURLを設定

  • Authorized Redirect URIs

    • 認証が完了した後にリダイレクトされるページのURLを設定

Publish to Integrations Directoryを選択するとWakaTimeユーザーも利用できるようにります。

以下README.mdに記載



ここからはがっつり、コードが絡んでくるため詳しい実装は以下に記載しています!

おまけ

認証コードを取得するためのエンドポイント

https://wakatime.com/oauth/authorize

 上記にアクセス、必須パラメーターは以下

  • client_id

  • redirect_uri

選択パラメーターは以下

  • scope

  • state

    • CSRF対策に必須(推測不可能な値を設定する)

  • force_approve

    • 認証していても再度認証画面を表示させる

scopesについて

  • read_summaries

    • ユーザーのサマリーと統計情報(カテゴリ、依存関係、エディタ、言語、マシン、オペレーティングシステム、プロジェクト)にアクセス

  • read_summaries.categories

    • ユーザーのサマリーと統計情報(カテゴリに限定)

  • read_summaries.dependencies

    • ユーザーのサマリーと統計情報(依存関係に限定)

  • read_summaries.languages

    • ユーザーのサマリーと統計情報(言語に限定)

  • read_summaries.machines

    • ユーザーのサマリーと統計情報(マシンに限定)

  • read_summaries.operating_systems

    • ユーザーのサマリーと統計情報(オペレーティングシステムに限定)

  • read_summaries.projects

    • ユーザーのサマリーと統計情報(プロジェクトに限定)

  • rad_stats

    • ユーザーの統計情報(カテゴリ、依存関係、エディタ、言語、マシン、オペレーティングシステム、プロジェクト)にアクセス

  • read_goals

    • ユーザーのゴールにアクセス

  • read_orgs

    • ユーザーの組織とダッシュボードメンバーのコーディング活動にアクセス

  • read_private_leaderboards

    • ユーザーのプライベートリーダーボードにアクセス

  • write_private_leaderboards

    • ユーザーのプライベートリーダーボードを変更

      • ユーザーが管理者または所有者ならばメンバーの追加と削除が可能

  • read_heartbeats

    • ユーザーのコーディング活動、プロジェクト、ファイル、エディタ言語、オペレーティングシステム、依存関係、統計、期間、外部期間、ハートビートにアクセス

  • write_heartbeats

    • ユーザーのコーディング活動を変更

      • ハートビートと外部期間を作成、編集、削除

  • email

    • ユーザーのプライベートメールアドレスにアクセス

用語

  • サマリー
    WakaTimeでは特定の期間(日、週、月)におけるコーディング活動の概要

  • ハートビート

    • 特定の時間に特定のファイルで行われた活動(コーディング、読み込み、デバッグなど)を表すイベント

今回のcommitsを取得するためにはscopeをread_heartbeatsにする必要があります。

まとめ

久々にAPIを使ってみました。WakaTimeのサービス自体の説明はあるけどAPIに関して説明している記事がなかったので先駆者になれたらうれし〜
当初はフロント側だけでAPIの処理しようと思ってたんですけど、アクセストークンが絡んでくるのでJavaScriptで中身が見れるのやばいとおもったのでバックエンドでサーバー立てましたー。めっちゃ勉強になった!


いいなと思ったら応援しよう!