@@ -8,28 +8,121 @@ async function fetchAllRules() {
8
8
try {
9
9
const apiResponse = await sdk . getRules ( ) ;
10
10
allRules = apiResponse . data ;
11
+ console . log ( 'Number of rules 👉👉👉👉' , allRules . data . length ) ;
11
12
} catch ( e ) {
12
13
console . error ( e ) ;
13
14
}
14
15
15
16
return allRules ;
16
17
}
17
18
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
+ } ) ;
20
39
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
+ }
22
81
}
23
82
24
- async function getRuleWithName ( allRules , ruleName ) {
83
+ function getRuleWithName ( allRules , ruleName ) {
25
84
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
+ }
27
94
}
28
95
29
96
// Make this code below explicitly under async so as to leverage the async-await functionality
30
97
( 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
+ )
33
112
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
+ )
34
125
126
+ // Test the total number of rules now
127
+ rules = await fetchAllRules ( ) ;
35
128
} ) ( )
0 commit comments