return Promise.mapSeries(_.values(specs), function (swagger) { if (_.isUndefined(swagger.info['x-logo'])) return swagger; var url = swagger.info['x-logo'].url; assert(url.indexOf('#') === -1); return makeRequest('get', url, {encoding: null}) .spread(function(response, data) { var extension = URI(url).suffix(); if (!extension) { var mime = response.headers['content-type']; assert(mime.match('image/')); extension = MIME.extension(mime); assert(extension); } var logoFile = 'cache/' + util.getSwaggerPath(swagger, 'logo.' + extension); util.saveFile(logoFile, data); //Modify object to swagger.info['x-logo'].url = specRootUrl + logoFile; return swagger; }); });
function fetchPage(url, parseFn) { url = baseUrl + url; //Forbid redirects, since ProgrammableWeb has duplicates and even loops. return makeRequest('get', url, {followRedirect: false}) .spread(gcHacks.recreateReturnObjectAndGcCollect(function (response, body) { return parseFn(cheerio.load(body)); })); }
converter.ResourceReaders.url = function (url) { var options = { headers: { 'Accept': 'application/json,*/*', } }; return makeRequest('get', url, options) .then(([, data]) => data); }
converter.ResourceReaders.url = function (url, callback) { var options = { headers: { 'Accept': 'application/json,*/*', } }; makeRequest('get', url, options) .spread(function (response, data) { return data; }) .asCallback(callback); }
function saveShield(subject, status, color) { function escape(obj) { var str = _.isString(obj) ? obj : obj.toString(); return str.replace(/_/g, '__').replace(/-/g, '--').replace(/ /g, '_'); } function join(left, right) { return left + '-' + right; } var text = join(escape(subject), escape(status)); var url = 'https://img.shields.io/badge/' + join(text, color) + '.svg'; return makeRequest('get', url, {encoding: null}) .spread(function(response, data) { var filename = escape(subject).toLowerCase() + '_banner.svg'; util.saveFile(filename, data); }); }
function cacheLogo(url) { assert(url.indexOf('#') === -1); return makeRequest('get', url, {encoding: null}) .spread(function(response, data) { var logoFile = 'cache/logo/' + util.urlToFilename(url, true); if (!URI(url).suffix()) { var mime = response.headers['content-type']; assert(mime.match('image/')); var extension = MIME.extension(mime); assert(extension); logoFile += `.${extension}`; } util.saveFile(deployDir(logoFile), data); return rootUrl(logoFile); }); }
function saveShield(subject, status, color, icon) { function escape(obj) { return obj.toString().replace(/_/g, '__').replace(/-/g, '--').replace(/ /g, '_'); } subject = escape(subject); status = escape(status); var url = new URI(`https://img.shields.io/badge/${subject}-${status}-${color}.svg`); if (icon) { var base64 = new Buffer(icon).toString('base64'); url.addQuery('logo', 'data:image/png;base64,' + base64); } return makeRequest('get', url.href(), {encoding: null}) .spread(function(response, data) { util.saveFile(`badges/${subject.toLowerCase()}_banner.svg`, data); }); }