Skip to content

Commit 8c6fd99

Browse files
committed
chore: update ExtractVariables samplet
1 parent e1f92ea commit 8c6fd99

23 files changed

+343
-229
lines changed

samplets/Extract-Variables/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Extract Variables Samplets
22

3-
This samplet proxy includes these samplets:
3+
This samplet proxy includes these samplets:
44

55
* [Extract Query Parameter from Request](./docs/Extract-Query-Param.md)
66
* [Extract Part of Request Path](./docs/Extract-URI-Part.md)
77

8-
>See How to Use Samplets in the main Samplets [README.md](../README.md)
8+
>See How to Use Samplets in the main Samplets [README.md](../README.md)

samplets/Extract-Variables/apiproxy/Extract-Variables.xml

-26
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<AssignMessage name='AM-Remove-Inbound-Headers'>
2+
<Remove>
3+
<Headers/>
4+
</Remove>
5+
</AssignMessage>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<ExtractVariables name="EV-Path-Component">
2+
<Source>request</Source>
3+
<URIPath>
4+
<Pattern ignoreCase="true">/resource1/{id}</Pattern>
5+
</URIPath>
6+
<VariablePrefix>urirequest</VariablePrefix>
7+
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
8+
</ExtractVariables>
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<ExtractVariables name="Extract-Query-Param">
3-
<DisplayName>Extract Query Param</DisplayName>
1+
<ExtractVariables name="EV-Query-Param">
42
<Source>request</Source>
53
<QueryParam name="code">
64
<Pattern ignoreCase="true">DBN{dbncode}</Pattern>
75
</QueryParam>
86
<VariablePrefix>queryinfo</VariablePrefix>
97
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
10-
</ExtractVariables>
8+
</ExtractVariables>

samplets/Extract-Variables/apiproxy/policies/Extract-Path-Component.xml

-10
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<Javascript name="JS-Produce-Response-for-Read-Query-Param">
2+
<Properties/>
3+
<ResourceURL>jsc://summarize-read-query-param.js</ResourceURL>
4+
</Javascript>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<Javascript name="JS-Produce-Response-for-Read-URI-Path">
2+
<Properties/>
3+
<ResourceURL>jsc://summarize-for-read-uri-path.js</ResourceURL>
4+
</Javascript>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<RaiseFault name='RF-Invalid-Query-Param'>
2+
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
3+
<FaultResponse>
4+
<Set>
5+
<Payload contentType='application/json'>{
6+
"error" : {
7+
"code" : 400.01,
8+
"message" : "You should pass exactly one value for the `code` query param."
9+
}
10+
}
11+
</Payload>
12+
<StatusCode>400</StatusCode>
13+
<ReasonPhrase>Bad Request</ReasonPhrase>
14+
</Set>
15+
</FaultResponse>
16+
</RaiseFault>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<RaiseFault name='RF-Unknown-Request'>
2+
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
3+
<FaultResponse>
4+
<Set>
5+
<Payload contentType='application/json'>{
6+
"error" : {
7+
"code" : 404.01,
8+
"message" : "Unknown request. Check your path!"
9+
}
10+
}
11+
</Payload>
12+
<StatusCode>404</StatusCode>
13+
<ReasonPhrase>Not Found</ReasonPhrase>
14+
</Set>
15+
</FaultResponse>
16+
</RaiseFault>

samplets/Extract-Variables/apiproxy/policies/ReadQueryParam.xml

-6
This file was deleted.

samplets/Extract-Variables/apiproxy/policies/ReadURIPath.xml

-6
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,68 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
22
<ProxyEndpoint name="default">
3-
<Description/>
3+
<Description>demonstrates how to use ExtractVariables to extract a value from a query parameter.</Description>
4+
<HTTPProxyConnection>
5+
<BasePath>/samplet-extract-variables</BasePath>
6+
<VirtualHost>secure</VirtualHost>
7+
</HTTPProxyConnection>
8+
49
<PreFlow name="PreFlow">
5-
<Request/>
6-
<Response/>
10+
<Request/>
11+
<Response>
12+
<Step>
13+
<Name>AM-Remove-Inbound-Headers</Name>
14+
</Step>
15+
</Response>
716
</PreFlow>
17+
818
<Flows>
9-
<Flow name="Extract URI Path">
10-
<Description>Use the Extract Variables policy to parse the request URL</Description>
11-
<Request>
12-
<Step>
13-
<Name>Extract-Path-Component</Name>
14-
</Step>
15-
<Step>
16-
<Name>ReadURIPath</Name>
17-
</Step>
18-
</Request>
19-
<Response/>
20-
<Condition>(proxy.pathsuffix MatchesPath "/resource1/{id}") and (request.verb = "GET")</Condition>
21-
</Flow>
22-
<Flow name="Extract Query Param">
23-
<Description>Use the Extract Variables policy to parse the request URL</Description>
24-
<Request>
25-
<Step>
26-
<Name>Extract-Query-Param</Name>
27-
</Step>
28-
<Step>
29-
<Name>ReadQueryParam</Name>
30-
</Step>
31-
</Request>
32-
<Response/>
33-
<Condition>(request.queryparam.code.values.count = 1) and (request.verb = "GET")</Condition>
34-
</Flow>
19+
<Flow name="Extract URI Path">
20+
<Description>Use the Extract Variables policy to parse the request URL</Description>
21+
<Request>
22+
<Step>
23+
<Name>EV-Path-Component</Name>
24+
</Step>
25+
<Step>
26+
<Name>JS-Produce-Response-for-Read-URI-Path</Name>
27+
</Step>
28+
</Request>
29+
<Response/>
30+
<Condition>(proxy.pathsuffix MatchesPath "/resource1/{id}") and (request.verb = "GET")</Condition>
31+
</Flow>
32+
33+
<Flow name="Extract Query Param">
34+
<Description>Use the Extract Variables policy to parse the request URL</Description>
35+
<Request>
36+
<Step>
37+
<Name>RF-Invalid-Query-Param</Name>
38+
<Condition>NOT (request.queryparam.code.values.count = 1)</Condition>
39+
</Step>
40+
<Step>
41+
<Name>EV-Query-Param</Name>
42+
</Step>
43+
</Request>
44+
<Response>
45+
<Step>
46+
<Name>JS-Produce-Response-for-Read-Query-Param</Name>
47+
</Step>
48+
</Response>
49+
<Condition>(proxy.pathsuffix = "") and (request.verb = "GET")</Condition>
50+
</Flow>
51+
52+
<Flow name="unknown-request">
53+
<Request>
54+
<Step>
55+
<Name>RF-Unknown-Request</Name>
56+
</Step>
57+
</Request>
58+
<Response/>
59+
</Flow>
60+
3561
</Flows>
62+
3663
<PostFlow name="PostFlow">
37-
<Request/>
38-
<Response/>
64+
<Request/>
65+
<Response/>
3966
</PostFlow>
40-
<HTTPProxyConnection>
41-
<BasePath>/samplet-extract-variables</BasePath>
42-
<VirtualHost>default</VirtualHost>
43-
<VirtualHost>secure</VirtualHost>
44-
</HTTPProxyConnection>
4567
<RouteRule name="noroute"/>
46-
</ProxyEndpoint>
68+
</ProxyEndpoint>

samplets/Extract-Variables/apiproxy/resources/jsc/ReadQueryParam.js

-19
This file was deleted.

samplets/Extract-Variables/apiproxy/resources/jsc/ReadURIPath.js

-19
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//-- Get the data for the {id} pattern specified in the Extract Variables policy.
2+
//-- Note that urirequest is the VariablePrefix specified in the policy.
3+
var data = context.getVariable("urirequest.id");
4+
5+
//-- Tell them what demonstrated.
6+
var demoSummary =
7+
"Extract value of {id} parsed from the proxypath.suffix: /extract-variables/resource1/{id}.";
8+
9+
//-- Tell them what policy we used.
10+
var policyUsed = "Extract Variables";
11+
12+
//-- Tell them what variable the value was saved in.
13+
var flowVar = "urirequest.id";
14+
15+
//-- Form the JSON response
16+
var jsonData = {
17+
"Feature demonstrated": demoSummary,
18+
"Data extracted": data,
19+
"Policy demonstrated": policyUsed,
20+
"Flow variable written/read": flowVar
21+
};
22+
23+
//-- Set the response. Note that message.content is read/write and always in scope.
24+
context.setVariable("message.header.Content-Type", "application/json");
25+
context.setVariable(
26+
"message.content",
27+
JSON.stringify(jsonData, null, 2) + "\n"
28+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//-- Get the data for the {id} pattern specified in the Extract Variables policy.
2+
//-- Note that urirequest is the VariablePrefix specified in the policy.
3+
var data = context.getVariable("queryinfo.dbncode");
4+
5+
//-- Tell them what demonstrated.
6+
var demoSummary =
7+
"Extracted value of {dbncode} parsed from query param: /extract-variables?code=DBN{dbncode}.";
8+
9+
//-- Tell them what policy we used.
10+
var policyUsed = "Extract Variables";
11+
12+
//-- Tell them what variable the value was saved in.
13+
var flowVar = "queryinfo.dbncode";
14+
15+
//-- Form the JSON response
16+
var jsonData = {
17+
"Feature demonstrated": demoSummary,
18+
"Data extracted": data,
19+
"Policy demonstrated": policyUsed,
20+
"Flow variable written/read": flowVar
21+
};
22+
23+
//-- Set the response. Note that message.content is read/write and always in scope
24+
context.setVariable("message.header.Content-Type", "application/json");
25+
context.setVariable(
26+
"message.content",
27+
JSON.stringify(jsonData, null, 2) + "\n"
28+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<APIProxy revision="4" name="samplet-extract-variables">
3+
<ConfigurationVersion majorVersion="4" minorVersion="0"/>
4+
<Description>Demonstrates how to use the Extract Variables proxy to parse a request URL.</Description>
5+
</APIProxy>

0 commit comments

Comments
 (0)