SNAPKITTYWEST's picture
push from SNAPKITTYWEST/apple-ii-universal-machine
e870690 verified
Raw
History Blame Contribute Delete
1.87 kB
var GitHubAPI = {
BASE: 'https://api.github.com',
_headers: function() {
var token = GitHubAuth.getToken();
return {
'Authorization': token ? 'token ' + token : '',
'Accept': 'application/vnd.github.v3+json',
'Content-Type': 'application/json'
};
},
get: async function(path) {
var resp = await fetch(this.BASE + path, { headers: this._headers() });
if (!resp.ok) throw new Error('GitHub API: ' + resp.status);
return resp.json();
},
post: async function(path, body) {
var resp = await fetch(this.BASE + path, {
method: 'POST',
headers: this._headers(),
body: JSON.stringify(body)
});
if (!resp.ok) {
var err = await resp.text();
throw new Error('GitHub API: ' + resp.status + ' — ' + err);
}
return resp.json();
},
put: async function(path, body) {
var resp = await fetch(this.BASE + path, {
method: 'PUT',
headers: this._headers(),
body: JSON.stringify(body)
});
if (!resp.ok) throw new Error('GitHub API: ' + resp.status);
return resp.json();
},
createRepo: async function(name, opts) {
opts = opts || {};
return this.post('/user/repos', {
name: name,
description: opts.description || 'Apple II Universal Machine — inverted repo',
private: opts.private || false,
auto_init: true,
homepage: opts.homepage || ''
});
},
createFile: async function(owner, repo, path, content, message) {
var encoded = btoa(unescape(encodeURIComponent(content)));
return this.put('/repos/' + owner + '/' + repo + '/contents/' + path, {
message: message || 'Add ' + path,
content: encoded
});
},
getRepo: async function(owner, repo) {
return this.get('/repos/' + owner + '/' + repo);
}
};