UNPKG

@sector-labs/seo-slip

Version:

Catches SEO regressions by sampling and checking a website against a set of rules

46 lines (41 loc) 1.69 kB
const https = require('https'); const downloadRobotsTxt = (robotsTxtUrl, customHeaders = {}) => { const options = { headers: { 'User-Agent': 'curl/7.64.1', ...customHeaders } }; return new Promise((resolve, reject) => { https .get(robotsTxtUrl, options, (res) => { const { statusCode } = res; const contentType = res.headers['content-type']; let error; const expectedContentType = /^text\/plain/; if (statusCode !== 200) { error = new Error( `Request to ${robotsTxtUrl} failed. Status code: ${statusCode}` ); } else if (!expectedContentType.test(contentType)) { error = new Error( `Invalid content-type of ${robotsTxtUrl}. Expected ${expectedContentType} but received ${contentType}` ); } if (error) { console.error(error.message); // Consume response data to free up memory res.resume(); reject(error); return; } res.setEncoding('utf8'); let robotsTxtContent = ''; res.on('data', (chunk) => { robotsTxtContent += chunk; }); res.on('end', () => { resolve(robotsTxtContent); }); }) .on('error', (e) => { reject(new Error(`Got error: ${e.message}`)); }); }); }; module.exports = downloadRobotsTxt;