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
})
}