@@ -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/jquery@3.7.1/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/jquery@3.7.1/dist/jquery.min.js?a=1'
124+ )
34125
126+ // Test the total number of rules now
127+ rules = await fetchAllRules ( ) ;
35128} ) ( )
0 commit comments