
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で中身が見れるのやばいとおもったのでバックエンドでサーバー立てましたー。めっちゃ勉強になった!