Swift/Kotlin愛好会 Advent Calendar 2019の空き枠を埋めに来ました。
作ったもの
インストール
Homebrew対応させました
$ brew tap 417-72KI/SSGH
$ brew install ssgh
使い方
GitHubトークンが必要なのではじめに作ります
できたトークンを環境変数にセットします
export SSGH_TOKEN='{コピってきたトークン}'
後はGitHubのアカウントを指定してコマンドを叩くだけ!
ssgh 417-72KI
仕組み
やっていることは非常に単純ですが、GitHub APIの仕様に癖があって微妙に苦戦しました。
- ユーザ情報取得 (
GET /users/:username
) - リポジトリリスト取得 (
GET /users/:username/repos
) - 各リポジトリごとにスター済みか確認 (
GET /user/starred/:owner/:repo
) - スターしていないリポジトリにスターを付ける(
PUT /user/starred/:owner/:repo
)
リポジトリリストから取得できたエンティティにはスター済みかのフラグが無いため、各リポジトリに対してスター済みか確認するAPIを叩く必要があります。
このスター済み確認API、なんとレスポンスは空っぽで、
- スター済みならステータス204
- 未スターならステータス404
という不思議な仕様になっています。
そのため、レスポンスのステータスコードを見て404なら正常系として扱うようにエラーハンドリングをゴニョゴニョする必要がありました。
奮闘の結果はこちらを御覧ください(
使ったもの
TODO
- ターゲット複数指定爆撃
- フォロワー全員に爆撃
余談
名前の由来ですが、7年くらい前に流行ったShootingStarというTwitterクライアントをリスペクトしています。
当時のTwitterは「いいね」ではなく「お気に入り(ふぁぼ)」があり、そのアイコンが☆でした。
また、ふぁぼ爆撃という文化もあり爆撃専用に作られたのがShootingStarというクライアントでした。
終わりに
誰かから「スターください」って言われたらこのツールを使って爆撃していってください。
そしてこの記事を見たそこのあなた、後は分かるね?(