talkdesk-useragent-switcher/v3/request.js

52 lines
1.2 KiB
JavaScript
Raw Normal View History

2022-11-16 03:28:54 -08:00
/* global policy */
const request = {};
request.network = async prefs => {
const p = await policy.parse();
const condition = {
'isUrlFilterCaseSensitive': false,
'resourceTypes': Object.values(chrome.declarativeNetRequest.ResourceType)
};
const one = {
'id': 1,
'priority': 1,
'action': {
'type': 'modifyHeaders',
'requestHeaders': [{
'operation': 'set',
'header': 'user-agent',
'value': p.ua
}]
},
'condition': {
...condition
}
};
const o = {
addRules: [one],
removeRuleIds: (await chrome.declarativeNetRequest.getDynamicRules()).map(o => o.id)
};
if (prefs.enabled) {
if (prefs.mode === 'blacklist') {
one.condition.excludedInitiatorDomains = prefs['blacklist-exception-hosts'];
}
else {
if (prefs['whitelist-hosts'].length) {
one.condition.initiatorDomains = prefs['whitelist-hosts'];
}
else {
console.info('matching list is empty');
o.addRules.length = 0;
}
}
}
chrome.declarativeNetRequest.updateDynamicRules(o);
};
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(d => console.log(d));