Я бы так попробовал чиста для интереса.
async function onRequest(req, res) {
var parsed = url.parse(req.url, true);
switch (parsed.pathname) {
case '/':
case '/index.html':
fs.readFile('index.html', function(err, file) {
if (err) res.end();
res.end(file);
});
break;
case '/file':
await uploadFile(req);
var l = await changeImage({
'uploadfile': fs.createReadStream('./files/temp.jpg'),
'ef-set': 10,
'ef-set-2': 10,
'jpeg-quality': 80
}, 'https://www.imgonline.com.ua/grid-square-result.php',
'http://www.imgonline.com.ua/',
new RegExp(/download\.php\?file=.+?\.jpg/));
await loadFile(l);
res.end('files/temp.jpg')
break;
default:
fs.readFile('./' + req.url, function(err, file) {
if (err) res.end();
res.end(file);
});
}
}
function changeImage(formData, url, link, regExp) {
return new Promise( (resolve, reject) => {
request.post(
{
url: url,
formData: formData
},
function(err, resp, body) {
if (err) {
console.log('ERR: ', err);
}
console.log(body);
link += body.match(regExp);
resolve(link);
});
});
}
Я вот не знаю, можно ли тут запилить async-функцию в качестве хендлера? Не пробовал.
Теоретически - а почему нет?