🐛 Fix compilation error

This commit is contained in:
C-3PO 2019-07-22 23:13:39 +02:00
parent 3485efee50
commit 89ea7e8246
Signed by: c3po
GPG key ID: 62993C4BB4D86F24
2 changed files with 20 additions and 15 deletions

View file

@ -6,7 +6,7 @@ import checkLocalCache from './funcs/checkLocalCache';
import createDirRecursively from './funcs/createDirRecursively'; import createDirRecursively from './funcs/createDirRecursively';
/** Downloads the given URL and saves it to disk. Returns the location where file is saved under. Throws error if download fails. */ /** Downloads the given URL and saves it to disk. Returns the location where file is saved under. Throws error if download fails. */
export default async function downloadWrapper({ host, path, size }: {host: string, path: string, size: number, useCurl: boolean}): Promise<string> { export default async function downloadWrapper({ host, path, size, useCurl }: {host: string, path: string, size: number, useCurl: boolean}): Promise<string> {
//Generate file name we want to save it under //Generate file name we want to save it under
//e.g. on Linux: /tmp/patcher/cdn-patch.swtor.com/patch/assets_swtor_main/assets_swtor_main_-1to0/assets_swtor_main_-1to0.zip //e.g. on Linux: /tmp/patcher/cdn-patch.swtor.com/patch/assets_swtor_main/assets_swtor_main_-1to0/assets_swtor_main_-1to0.zip
const tempFileName = nodePath.join(os.tmpdir(), 'patcher', host, path); const tempFileName = nodePath.join(os.tmpdir(), 'patcher', host, path);
@ -21,19 +21,23 @@ export default async function downloadWrapper({ host, path, size }: {host: strin
return tempFileName; return tempFileName;
} }
//Download via curl if (useCurl) {
//Try up to 15 times //Download via curl
for (let i = 0; i < 15; i += 1) { //Try up to 15 times
try { for (let i = 0; i < 15; i += 1) {
//After five tries from CDN, switch to master source try {
const currentHost = (host === 'cdn-patch.swtor.com' && i >= 5 ? patchMasterSource : host); //After five tries from CDN, switch to master source
const downloadResult = await downloadWithCurl({ host: currentHost, path, tempFileName }); const currentHost = (host === 'cdn-patch.swtor.com' && i >= 5 ? patchMasterSource : host);
return downloadResult; const downloadResult = await downloadWithCurl({ host: currentHost, path, tempFileName });
} catch (err) { return downloadResult;
console.error(err); } catch (err) {
//ignore error and try again console.error(err);
//ignore error and try again
}
} }
//Download failed, throw error
throw new Error('Could not download with curl');
} else {
throw new Error('Non-curl download is not yet implemented.');
} }
//Download failed, throw error
throw new Error('Could not download with curl');
} }

View file

@ -57,13 +57,14 @@ export default async function installPatch({ product, from, to, sourceDirectory,
host: 'cdn-patch.swtor.com', host: 'cdn-patch.swtor.com',
path: `/patch/${product.startsWith('retailclient_') ? `${product.substring(13)}/` : ''}${product}/${product}_${from}to${to}/${name}`, path: `/patch/${product.startsWith('retailclient_') ? `${product.substring(13)}/` : ''}${product}/${product}_${from}to${to}/${name}`,
size: length, size: length,
useCurl: true,
}; };
} }
//start download, making sure that .zip file downloads first //start download, making sure that .zip file downloads first
const indexOfLastFile = solidpkg.files.length - 1; const indexOfLastFile = solidpkg.files.length - 1;
const zipFile = getUrlContents(createUrlObject(solidpkg.files[indexOfLastFile])); const zipFile = getUrlContents(createUrlObject(solidpkg.files[indexOfLastFile]));
const diskFiles = solidpkg.files.slice(0, indexOfLastFile).map((file) => downloadWrapper.bind(null, createUrlObject(file))); const diskFiles = solidpkg.files.slice(0, indexOfLastFile).map((file) => async function() { await downloadWrapper(createUrlObject(file)); });
//we can parse the file entries as soon as the .zip file is downloaded //we can parse the file entries as soon as the .zip file is downloaded
const fileEntries = readSsnFile(await zipFile); const fileEntries = readSsnFile(await zipFile);