async function getPackageRepo()

in generate-attribution/generate-attribution-file.js [174:209]


async function getPackageRepo(package) {
    let finalDoc = '';
    const url = `https://${package}?go-get=1`
    const options = await generateAuthorizationHeader()
    return new Promise((resolve, reject) => {
        const req = https.get(url, options, res => {
            if (res.statusCode !== 200) {
                if (package.startsWith('github.com')) {
                    // This is probably happening because github doesnt seem to return the go-import for sub packages
                    return resolve(parseRepoURL(`https://${package}`));
                }
                console.log('NOTICE: request to get package url return invalid response', res.statusCode, url);
                resolve(`https://${package}`)
            }
            res.on('data', d => {
                finalDoc += d;
            })
            res.on('end', () => {
                const htmlDoc = HTMLParser.parse(finalDoc);
                const metaTag = htmlDoc.querySelector('head meta[name=go-import]')
                if (metaTag) {
                    resolve(parseRepoURL(metaTag.getAttribute('content')));
                }
                else {
                    resolve(`https://${package}`)
                }

            });
        })

        req.on('error', (err) => {
            reject(err);
        });
        req.end();
    });
}