Code Tweet(README から SNS 投稿文を生成するアプリ)が GitHub と通信する部分のコードをそのまま公開したものです。本体は非公開ですが、「GitHub から何を取得しているか」を誰でも確認できるように、この通信部分だけを切り出しています。
このコードが GitHub に対して呼び出している API は、次の 2 つだけ です。
| 用途 | 呼び出している GitHub API |
|---|---|
| README の取得 | GET /repos/{owner}/{repo}/readme |
| リポジトリ一覧の取得 | GET /user/repos |
- ソースコードを取得する API(
/contents、/git/trees、/git/blobs、リポジトリの clone/archive など)は一切呼び出していません。 - README は最大 64KB まで。リポジトリ一覧は名前・説明・公開非公開・更新日時などのメタ情報のみを扱います。
該当コードは src/app/api/github/route.ts(README 取得)と src/app/api/repos/route.ts(リポジトリ一覧)で確認できます。grep で api.github.com を検索すれば、上記 2 つ以外のエンドポイントを叩いていないことを確認できます。
- 非公開リポジトリへのアクセスは、
Contents: Read-onlyに絞った fine-grained personal access token のみを受け付けます。広い権限を持つ classic PAT(repoスコープ)は拒否します(判定ロジックはsrc/lib/githubReadme.tsのdetectPatKind)。 - トークンはサーバー側でのみ扱い、保存時は AES-256-GCM で暗号化します。
| ファイル | 役割 |
|---|---|
src/app/api/github/route.ts |
指定リポジトリの README を取得する API ルート |
src/app/api/repos/route.ts |
ログインユーザーのリポジトリ一覧を取得する API ルート |
src/lib/githubReadme.ts |
URL パース、README ペイロード整形、PAT 種別判定(detectPatKind) |
このリポジトリは本体(非公開)からの 手動ミラーです。乖離がないか確認できるよう、同期元コミットを記載します。
- 同期元:
nakakei6439/Code-Tweet - 同期コミット:
dba940fcd011fad6b69d71f57566fff831f154da
注意: 手動ミラーのため、本体の更新がここへ反映されるまでにずれが生じる可能性があります。将来的には共有パッケージ化や git subtree による無乖離同期を検討しています。