GitHub API を使用して、GitHub からファイルをダウンロードしています。認証に成功し、github からの応答を取得でき、ファイルの内容を表す base64 でエンコードされた文字列を確認できました。
残念ながら、base64 文字列をデコードするときに異常なエラー (文字列の長さが 4 の倍数ではない) が発生します。
HTTP リクエストを以下に示します。
GET /repos/:owner/:repo/contents/:path
(部分的な) 応答を以下に示します。
{
"name":....,
"download_url":...",
"type":"file",
"content":"ewogICAgInN3YWdnZXIiOiAiM...
}
私が遭遇している問題は、文字列の長さが 15263 バイトであり、文字列のデコード中にエラーが発生することです (文字列の長さが 4 の倍数ではありません)。node.js と 'base64-js' npm モジュールを使用して文字列をデコードしています。デコードを実行するコードを以下に示します。
var base64 = require('base64-js');
var contents = base64.toByteArray(fileContent);
デコードすると例外が発生します。
Error: Invalid string. Length must be a multiple of 4
at placeHoldersCount (.../node_modules/base64-js/index.js:23:11)
at Object.toByteArray (...node_modules/base64-js/index.js:42:18)
:
:
GitHub API が正しいデータを送信していると思うので、それは問題ではないと思います。
デコードを不適切に実行していますか、それとも見落としている別の問題がありますか?
どんな助けでも大歓迎です。