Archivo HTML5 api y octokit.js y file binary

Intento crear una forma que pueda cargar datos binarys a través de octokit.js al github. Por ejemplo, algunos pdf o imágenes (blob binary). Mi problema es que todos mis bashs terminan con datos dañados en el lado de Github.

Ejemplo de trabajo mínimo: http://jsfiddle.net/keddie/7r3f4q77/

var _arrayBufferToBase64 = function (buffer) { var binary = ''; var bytes = new Uint8Array(buffer); var len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } return window.btoa(binary); }; var go = function () { var config = { user: $('#user').val(), repo: $('#repo').val(), token: $('#token').val(), handler: document.getElementById('file').files[0] }; var reader = new FileReader(); var github = new Octokit({ token: config.token }); var repo = github.getRepo(config.user, config.repo); var branch = repo.getBranch(); reader.onloadend = function (evt) { var files = {}; if (evt.target.readyState == FileReader.DONE) { /* Anothers attempts: files[ 'x1.pdf' ] = { isBase64: true, content: evt.target.result }; files[ 'x2.pdf' ] = { isBase64: true, content: evt.target.result.substring('data:application/octet-stream;base64,'.length) }; */ files['x4.pdf'] = { isBinary: true, isBase64: true, content: _arrayBufferToBase64(evt.target.result) }; } else { console.warn(evt.target.error); } branch.writeMany(files, "API test commit 1").then(function (res) { if (res) { console.log('ok'); $('#result').text('OK'); } else { console.error(res); $('#result').text('Error'); } }); }; var blob = config.handler.slice(0, config.handler.size); //reader.readAsDataURL(blob); reader.readAsArrayBuffer(blob); }; $(document).ready(function () { $('#submit').click(go); }); 

Y HTML:

 <p>User: <input type="text" id="user" /> </p> <p>Repo: <input type="text" id="repo" /> </p> <p>Token: <input type="text" id="token" /> </p> <p>File: <input type="file" id="file" /> </p> <p> <button id="submit">Submit</button> </p> <p id="result"></p> 

Mi segundo problema es cómo encontrar el nombre del file en read.onloadend callback (pero este es un problema menor).

Relevante es este problema: https://github.com/philschatz/octokit.js/issues/44

El problema estaba en la biblioteca octokit.js.

Preparo request de extracción: https://github.com/philschatz/octokit.js/pull/72