Skip to content

Commit 6a8c8a9

Browse files
committed
Added createNewRule and updateRule functions
1 parent 6b17fb0 commit 6a8c8a9

File tree

1 file changed

+100
-7
lines changed

1 file changed

+100
-7
lines changed

index.js

+100-7
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,121 @@ async function fetchAllRules() {
88
try {
99
const apiResponse = await sdk.getRules();
1010
allRules = apiResponse.data;
11+
console.log('Number of rules 👉👉👉👉', allRules.data.length);
1112
} catch(e) {
1213
console.error(e);
1314
}
1415

1516
return allRules;
1617
}
1718

18-
async function createNewRedirectRule(ruleObject) {
19-
console.log('Creating a new Redirect Rule', ruleObject);
19+
async function createNewRedirectRule(ruleName, ruleDesc, requestURL, destinationURL) {
20+
try {
21+
const postRulesAPIRresponse = await sdk.postRules({
22+
objectType: 'rule',
23+
ruleType: 'Redirect',
24+
status: 'Active',
25+
name: ruleName,
26+
description: ruleDesc,
27+
pairs: [
28+
{
29+
source: {
30+
key: 'Url',
31+
operator: 'Equals',
32+
value: requestURL
33+
},
34+
destination: destinationURL,
35+
destinationType: 'url'
36+
}
37+
]
38+
});
2039

21-
40+
if (postRulesAPIRresponse.data.success) {
41+
console.log('👉 Rule created successfully!!');
42+
}
43+
44+
return postRulesAPIRresponse.data;
45+
} catch (e) {
46+
console.error(e);
47+
}
48+
}
49+
50+
async function updateRedirectRule(ruleId, ruleName, ruleDesc, requestURL, destinationURL) {
51+
console.log(`👉 Updating a rule with Id=${ruleId} And name=${ruleName}`);
52+
53+
try {
54+
const updateRulesAPIResponse = await sdk.putRulesRuleid({
55+
objectType: 'rule',
56+
ruleType: 'Redirect',
57+
status: 'Active',
58+
name: ruleName,
59+
description: ruleDesc,
60+
pairs: [
61+
{
62+
source: {
63+
key: 'Url',
64+
operator: 'Equals',
65+
value: requestURL
66+
},
67+
destination: destinationURL,
68+
destinationType: 'url'
69+
}
70+
]
71+
}, {ruleId: ruleId})
72+
73+
if (updateRulesAPIResponse.data.success) {
74+
console.log('👉 Rule updated successfully!!', updateRulesAPIResponse.data.data);
75+
}
76+
77+
return updateRulesAPIResponse.data;
78+
} catch (e) {
79+
console.error(e);
80+
}
2281
}
2382

24-
async function getRuleWithName(allRules, ruleName) {
83+
function getRuleWithName(allRules, ruleName) {
2584
const rulesList = allRules.data;
26-
return rulesList.filter(ruleObject => ruleObject.name === ruleName);
85+
return rulesList.filter(ruleObject => ruleObject.name === ruleName)[0];
86+
}
87+
88+
async function deleteRule(ruleId) {
89+
try {
90+
deleteRuleAPIResponse = sdk.deleteRulesRuleid({ ruleId });
91+
} catch (e) {
92+
console.error(e);
93+
}
2794
}
2895

2996
// Make this code below explicitly under async so as to leverage the async-await functionality
3097
(async() => {
31-
const rules = await fetchAllRules();
32-
console.log(rules);
98+
const ruleName = 'PR-1234';
99+
100+
// Get All the rules
101+
let rules = await fetchAllRules();
102+
console.log(`Printing names for all the ${rules.data.length} rules 👇`, rules.data.map(ruleObject => ruleObject.name));
103+
104+
//Create a new rule
105+
console.log(`Creating a rule with name ${ruleName}`);
106+
await createNewRedirectRule(
107+
ruleName,
108+
ruleDesc = 'github.com/requestly/requestly/pulls/753 Testing API access',
109+
requestURL = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js',
110+
destinationURL = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js'
111+
)
33112

113+
// Test the total number of rules now
114+
rules = await fetchAllRules();
115+
116+
// Find the rule with RuleName & Update the description
117+
const ruleObject = getRuleWithName(rules, ruleName);
118+
await updateRedirectRule(
119+
ruleObject.id,
120+
ruleName,
121+
'Updated description',
122+
requestURL = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js',
123+
destinationURL = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js?a=1'
124+
)
34125

126+
// Test the total number of rules now
127+
rules = await fetchAllRules();
35128
})()

0 commit comments

Comments
 (0)