tencentcloud-edgeone-migration-nodejs-v2
Version:
tencentcloud cdn config copy to edgeone
150 lines (143 loc) • 3.56 kB
JavaScript
const utils = require('../utils');
const { t } = require("../../i18n/trans");
const genLog = require("../../logGenerator");
function CacheKey(domain, domainConfig, ruleTransferLog) {
const keyConfig = domainConfig.CacheKey;
if (!keyConfig) {
ruleTransferLog.push({
config: t('缓存键规则配置(CacheKey)'),
result: t('未配置'),
detail: ''
});
genLog.defaultLog(`${t('缓存键规则配置(CacheKey)')}${t('未配置')}`)
return null;
}
const { KeyRules } = keyConfig;
const eoRules = [];
KeyRules.forEach(rule => {
let eoRule = {
'Conditions': [
{
'Conditions': [
{
'Operator': 'equal',
'Target': rule.RuleType === 'path' ? 'url' :utils.getTarget(rule.RuleType),
'IgnoreCase': false,
'Values': utils.genOriginValue(rule)
}
]
}
],
'Actions': [{
'NormalAction': {
'Action': 'CacheKey',
'Parameters': [
{
'Name': 'FullUrlCache',
'Values': [rule.FullUrlCache]
},
{
'Name': 'Type',
'Values': [
'QueryString'
]
},
{
'Name': 'Switch',
'Values': [rule.QueryString.Switch]
},
{
'Name': 'Value',
'Values': rule.QueryString.Value ? rule.QueryString.Value.split(';') : []
}
]
}
}]
};
if (rule.QueryString.Action) {
eoRule.Actions[0].NormalAction.Parameters.push({
'Name': 'Action',
'Values': [rule.QueryString.Action]
});
}
eoRule.Actions[0].NormalAction.Parameters.push({
'Name': 'Type',
'Values': [
'IgnoreCase'
]
}, {
'Name': 'Switch',
'Values': [rule.IgnoreCase]
});
eoRules.push(eoRule);
});
let allFileRule = {
'Conditions': [
{
'Conditions': [
{
'Operator': 'equal',
'Target': 'host',
'Values': [
'all'
]
}
]
}
],
'Actions': [
{
'NormalAction': {
'Action': 'CacheKey',
'Parameters': [
{
'Name': 'FullUrlCache',
'Values': [keyConfig.FullUrlCache]
},
{
'Name': 'Type',
'Values': [
'QueryString'
]
},
{
'Name': 'Switch',
'Values': [keyConfig.QueryString.Switch]
},
{
'Name': 'Value',
'Values': keyConfig.QueryString.Value ? keyConfig.QueryString.Value.split(';') : []
}
]
}
}
]
};
if (keyConfig.QueryString.Action) {
allFileRule.Actions[0].NormalAction.Parameters.push({
'Name': 'Action',
'Values': [keyConfig.QueryString.Action]
});
}
allFileRule.Actions[0].NormalAction.Parameters.push({
'Name': 'Type',
'Values': [
'IgnoreCase'
]
}, {
'Name': 'Switch',
'Values': [keyConfig.IgnoreCase]
});
eoRules.unshift(allFileRule);
ruleTransferLog.push({
config: t('缓存键规则配置(CacheKey)'),
result: t('成功'),
detail: ''
});
genLog.successLog(`${t('缓存键规则配置(CacheKey)')}${t('成功')}`)
return {
'Rules': eoRules,
'Tags': []
};
}
module.exports = CacheKey;