scrabble-solver
Version:
Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Crossplay, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.
38 lines (31 loc) • 1.03 kB
text/typescript
import { http, https } from 'follow-redirects';
import fs from 'fs';
import { getTempFilepath } from './getTempFilepath';
export const downloadFile = (url: string): Promise<string> => {
return new Promise((resolve, reject) => {
const tempFilepath = getTempFilepath();
const protocol = url.startsWith('https') ? https : http;
const writeStream = fs.createWriteStream(tempFilepath);
const request = protocol.get(url, (response) => {
if (typeof response.statusCode === 'undefined' || response.statusCode >= 400) {
reject(new Error(`Cannot download file: ${url}`));
return;
}
response.on('error', (error) => {
writeStream.close();
reject(error);
});
response.on('end', () => {
writeStream.on('finish', () => {
writeStream.close();
resolve(tempFilepath);
});
});
response.pipe(writeStream);
});
request.on('error', (error) => {
writeStream.close();
reject(error);
});
});
};