mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-11-15 17:27:08 +00:00
70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
import axios from 'axios';
|
|
import _ from 'lodash';
|
|
import log from 'loglevel';
|
|
|
|
const ELECTRON_VERSIONS_URL = 'https://atom.io/download/atom-shell/index.json';
|
|
const DEFAULT_CHROME_VERSION = '61.0.3163.100';
|
|
|
|
function getChromeVersionForElectronVersion(
|
|
electronVersion,
|
|
url = ELECTRON_VERSIONS_URL,
|
|
) {
|
|
return axios.get(url, { timeout: 5000 }).then((response) => {
|
|
if (response.status !== 200) {
|
|
throw new Error(`Bad request: Status code ${response.status}`);
|
|
}
|
|
|
|
const { data } = response;
|
|
const electronVersionToChromeVersion = _.zipObject(
|
|
data.map((d) => d.version),
|
|
data.map((d) => d.chrome),
|
|
);
|
|
|
|
if (!(electronVersion in electronVersionToChromeVersion)) {
|
|
throw new Error(
|
|
`Electron version '${electronVersion}' not found in retrieved version list!`,
|
|
);
|
|
}
|
|
|
|
return electronVersionToChromeVersion[electronVersion];
|
|
});
|
|
}
|
|
|
|
export function getUserAgentString(chromeVersion, platform) {
|
|
let userAgent;
|
|
switch (platform) {
|
|
case 'darwin':
|
|
case 'mas':
|
|
userAgent = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
|
|
break;
|
|
case 'win32':
|
|
userAgent = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
|
|
break;
|
|
case 'linux':
|
|
userAgent = `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion} Safari/537.36`;
|
|
break;
|
|
default:
|
|
throw new Error(
|
|
'Error invalid platform specified to getUserAgentString()',
|
|
);
|
|
}
|
|
return userAgent;
|
|
}
|
|
|
|
function inferUserAgent(
|
|
electronVersion,
|
|
platform,
|
|
url = ELECTRON_VERSIONS_URL,
|
|
) {
|
|
return getChromeVersionForElectronVersion(electronVersion, url)
|
|
.then((chromeVersion) => getUserAgentString(chromeVersion, platform))
|
|
.catch(() => {
|
|
log.warn(
|
|
`Unable to infer chrome version for user agent, using ${DEFAULT_CHROME_VERSION}`,
|
|
);
|
|
return getUserAgentString(DEFAULT_CHROME_VERSION, platform);
|
|
});
|
|
}
|
|
|
|
export default inferUserAgent;
|