GitHub API からあるリポジトリのファイル内容取得

コード

以下はとあるリポジトリのfoo.txtを取得しています。
取得した内はbase64でエンコードされてるのでデコードが必要です。

/**
 * `yarn add dotenv got`
 */

require('dotenv').config();
const got = require('got');

(async () => {
  const {body} = await got(
    'https://api.github.com/repos/:owner/:repo/contents/foo.csv',
    {
      json: true,
      headers: {
        accept: 'application/vnd.github.v3+json',
        authorization: `token ${process.env.TOKEN}`
      }
    }
  );

  const decodedContent = Buffer.from(body.content, 'base64').toString();
  console.log(decodedContent);
})().catch(err => {
  console.log(err);
});

.envにはTOKENを定義しておきます。

TOKEN=xxx

日本語ファイルを取得

ファイルというか URL の日本語部分はパーセントエンコーディングします。テスト.csvを取得したいならこんな感じです。

`https://api.github.com/repos/geekcojp/directory-maps/contents/${encodeURIComponent(
  'テスト'
)}.csv`;

過去の状態のファイルを取得

URLの後ろにref={COMMIT_HASH || BRANCH || TAG}なParamをつけます。

`https://api.github.com/repos/geekcojp/directory-maps/contents/${encodeURIComponent(
  'テスト'
)}.csv?ref=fdbb18abe52965420c9c96b9502ddf14ba28dd7d`;

Github から Personal Access Token の取得

Settings -> 'Developer settings' -> 'Personal access tokens' から 'repository' にチェックを入れて生成