const get = require('simple-get') const util = require('./util') const proxy = require('./proxy') function findAssetId (opts, cb) { const downloadUrl = util.getDownloadUrl(opts) const apiUrl = util.getApiUrl(opts) const log = opts.log || util.noopLogger log.http('request', 'GET ' + apiUrl) const reqOpts = proxy({ url: apiUrl, json: true, headers: { 'User-Agent': 'simple-get', Authorization: 'token ' + opts.token } }, opts) const req = get.concat(reqOpts, function (err, res, data) { if (err) return cb(err) log.http(res.statusCode, apiUrl) if (res.statusCode !== 200) return cb(err) // Find asset id in release for (const release of data) { if (release.tag_name === opts['tag-prefix'] + opts.pkg.version) { for (const asset of release.assets) { if (asset.browser_download_url === downloadUrl) { return cb(null, asset.id) } } } } cb(new Error('Could not find GitHub release for version')) }) req.setTimeout(30 * 1000, function () { req.abort() }) } module.exports = findAssetId