import * as http from 'http'; export const getFileContents: (product?: string) => Promise = (product: string = 'assets_swtor_de_de') => new Promise((resolve, reject) => { //Generate URL const url = `http://cdn-patch.swtor.com/patch/${product}/${product}_-1to0.solidpkg`; const path = `/patch/${product}/${product}_-1to0.solidpkg`; const fileName = url.substr(url.lastIndexOf('/') + 1); const request = http.request({ family: 4, host: 'cdn-patch.swtor.com', path, }, (response) => { if (response.statusCode !== 200) { return reject(`Expected status code 200 but received ${response.statusCode}`); } const headerLength = Number(response.headers['content-length']); const chunkList: Buffer[] = []; let totalLength = 0; response.on('data', (chunk: Buffer) => { chunkList.push(chunk); totalLength += chunk.length; }); response.on('end', () => { if (totalLength !== headerLength) { return reject(`Expected length ${headerLength} but received ${totalLength}`); } const fileContents = Buffer.concat(chunkList, totalLength); resolve(fileContents); }); }); request.on('error', (e) => { reject(e); }); request.end(); }); getFileContents();