github3 = function(strings) {
let path = '';
if (Array.isArray(strings)) {
path = strings[0] + "";
let i = 0,
n = arguments.length;
while (++i < n) path += arguments[i] + "" + strings[i];
} else path = strings;
let ghToken = ghKey;
const opts = {
headers: {
Accept: `application/vnd.github.v3+json`
}
};
if (ghToken) opts.headers.Authorization = `token ${ghToken}`;
const url =
path.indexOf('https://api.github.com') >= 0
? path
: `https://api.github.com/${path}`;
return fetch(url, opts).then(async r => {
const data = await r.json();
const meta = {};
const rate_limit = {};
if (r.headers.has('Link')) meta.link = parseLH(r.headers.get('Link'));
rate_limit.limit = +r.headers.get('X-RateLimit-Limit');
rate_limit.remaining = +r.headers.get('X-RateLimit-Remaining');
rate_limit.reset = new Date(+r.headers.get('X-RateLimit-Reset') * 1000);
meta.rate_limit = rate_limit;
data.__meta = meta;
return data;
});
}