1 | <?xml version="1.0" encoding="UTF-8"?> |
---|
2 | <sequence debug="false" profile="false"> |
---|
3 | <sloot-profile name="schemaFile_dpml"> |
---|
4 | <log> |
---|
5 | <level>INFO</level> |
---|
6 | <message> |
---|
7 | <literal type="string">[interface.REST] [%1] requested schema file with id: [%2]</literal> |
---|
8 | </message> |
---|
9 | <param> |
---|
10 | <request> |
---|
11 | <identifier>active:xpath2</identifier> |
---|
12 | <argument name="operand">scratch:user</argument> |
---|
13 | <argument name="operator"> |
---|
14 | <literal type="string">string(/sc:user/@xml:id)</literal> |
---|
15 | </argument> |
---|
16 | </request> |
---|
17 | </param> |
---|
18 | <param>arg:schemaID</param> |
---|
19 | </log> |
---|
20 | <sloot-profile name="schemaFile_dpml.getSchema"> |
---|
21 | <request assignment="schema-metadata"> |
---|
22 | <identifier>active:org.isocat.schemacat.access.data.schema.metadata</identifier> |
---|
23 | <argument name="id">arg:schemaID</argument> |
---|
24 | </request> |
---|
25 | </sloot-profile> |
---|
26 | <request assignment="access-status"> |
---|
27 | <identifier>active:interface.rest.schema.access.getstatus</identifier> |
---|
28 | <argument name="schema-metadata">this:schema-metadata</argument> |
---|
29 | </request> |
---|
30 | <sloot-profile name="schemaFile_dpml.proceed"> |
---|
31 | <switch assignment="proceed"> |
---|
32 | <cond method="identity"> |
---|
33 | <request> |
---|
34 | <identifier>active:sloot.xpath2</identifier> |
---|
35 | <argument name="operand" >this:access-status</argument> |
---|
36 | <argument name="operator"> |
---|
37 | <literal type="string">boolean(.='private')</literal> |
---|
38 | </argument> |
---|
39 | </request> |
---|
40 | </cond> |
---|
41 | <then> |
---|
42 | <sequence> |
---|
43 | <if assignment="response"> |
---|
44 | <cond method="identity"> |
---|
45 | <request> |
---|
46 | <identifier>active:isAuthorized</identifier> |
---|
47 | <argument name="authorizedIDs" method="identity"> |
---|
48 | <request> |
---|
49 | <identifier>active:interface.rest.schema.access.authorizedIds</identifier> |
---|
50 | <argument name="schema-metadata">this:schema-metadata</argument> |
---|
51 | <argument name="schemaID">arg:schemaID</argument> |
---|
52 | </request> |
---|
53 | </argument> |
---|
54 | <argument name="authorizedRoles" method="identity"> |
---|
55 | <request> |
---|
56 | <identifier>active:org.isocat.schemacat.access.data.schemas.authorizedRoles</identifier> |
---|
57 | </request> |
---|
58 | </argument> |
---|
59 | <argument name="user" method="identity">scratch:user</argument> |
---|
60 | </request> |
---|
61 | </cond> |
---|
62 | <then> |
---|
63 | <sequence> |
---|
64 | <literal assignment="response" type="boolean">true</literal> |
---|
65 | <literal assignment="cache-control" type="string">private, max-age=0, must-revalidate</literal> <!-- no-cache, no-store? --> |
---|
66 | </sequence> |
---|
67 | </then> |
---|
68 | <else> |
---|
69 | <literal type="boolean">false</literal> |
---|
70 | </else> |
---|
71 | </if> |
---|
72 | </sequence> |
---|
73 | </then> |
---|
74 | <cond method="identity"> |
---|
75 | <request> |
---|
76 | <identifier>active:sloot.xpath2</identifier> |
---|
77 | <argument name="operand">this:access-status</argument> |
---|
78 | <argument name="operator"> |
---|
79 | <literal type="string">boolean(.='sharedURL')</literal> |
---|
80 | </argument> |
---|
81 | </request> |
---|
82 | </cond> |
---|
83 | <then> |
---|
84 | <sequence> |
---|
85 | <literal assignment="response" type="boolean">true</literal> |
---|
86 | <literal assignment="cache-control" type="string">public, max-age=0, must-revalidate, proxy-revalidate</literal> |
---|
87 | </sequence> |
---|
88 | </then> |
---|
89 | <otherwise> |
---|
90 | <literal type="boolean">false</literal> |
---|
91 | </otherwise> |
---|
92 | </switch> |
---|
93 | </sloot-profile> |
---|
94 | <sloot-profile name="schemaFile_dpml.generateResponse"> |
---|
95 | <if assignment="response"> |
---|
96 | <cond method="identity"> |
---|
97 | <request> |
---|
98 | <identifier>this:proceed</identifier> |
---|
99 | </request> |
---|
100 | </cond> |
---|
101 | <then> |
---|
102 | <sequence> |
---|
103 | <sloot-profile name="schemaFile_dpml.generateResponse.computeSchemaFolderName"> |
---|
104 | <request assignment="schema-folder-name"> |
---|
105 | <identifier>active:xpath2</identifier> |
---|
106 | <argument name="operand">this:schema-metadata</argument> |
---|
107 | <argument name="operator"> |
---|
108 | <literal type="string">string(/sc:schema/@xml:id)</literal> |
---|
109 | </argument> |
---|
110 | </request> |
---|
111 | </sloot-profile> |
---|
112 | <sloot-profile name="schemaFile_dpml.generateResponse.getSchemacatConfig"> |
---|
113 | <request assignment="schemacat-config"> |
---|
114 | <identifier>res:/etc/BaseXConfig.xml</identifier> |
---|
115 | </request> |
---|
116 | </sloot-profile> |
---|
117 | <sloot-profile name="schemaFile_dpml.generateResponse.computeSchemataLocation"> |
---|
118 | <request assignment="schemata-location"> |
---|
119 | <identifier>active:xpath2</identifier> |
---|
120 | <argument name="operand">this:schemacat-config</argument> |
---|
121 | <argument name="operator"> |
---|
122 | <literal type="string"> |
---|
123 | if (ends-with(/nvp/schemata-private-folder/text(), '/')) then |
---|
124 | /nvp/schemata-private-folder/text() |
---|
125 | else |
---|
126 | concat(/nvp/schemata-private-folder/text(), '/') |
---|
127 | </literal> |
---|
128 | </argument> |
---|
129 | </request> |
---|
130 | </sloot-profile> |
---|
131 | <sloot-profile name="schemaFile_dpml.generateResponse.computeSchemataFilesSubPath"> |
---|
132 | <request assignment="schemata-filesSubPath"> |
---|
133 | <identifier>active:xpath2</identifier> |
---|
134 | <argument name="operand">this:schemacat-config</argument> |
---|
135 | <argument name="operator"> |
---|
136 | <literal type="string"> |
---|
137 | if (ends-with(/nvp/schemata-private-filesSubFolder/text(), '/')) then |
---|
138 | /nvp/schemata-private-filesSubFolder/text() |
---|
139 | else |
---|
140 | concat(/nvp/schemata-private-filesSubFolder/text(), '/') |
---|
141 | </literal> |
---|
142 | </argument> |
---|
143 | </request> |
---|
144 | </sloot-profile> |
---|
145 | <sloot-profile name="schemaFile_dpml.generateResponse.computeSchemaPath"> |
---|
146 | <request assignment="schema-path"> |
---|
147 | <identifier>active:javascript</identifier> |
---|
148 | <argument name="operator"> |
---|
149 | <literal type="string"> |
---|
150 | var schemataLocation = context.source("arg:schemataLocation"); |
---|
151 | var schemaFolder = context.source("arg:schemaFolderName"); |
---|
152 | var schemaPath = schemataLocation + schemaFolder; |
---|
153 | context.createResponseFrom(schemaPath); |
---|
154 | </literal> |
---|
155 | </argument> |
---|
156 | <argument name="schemataLocation">this:schemata-location</argument> |
---|
157 | <argument name="schemaFolderName">this:schema-folder-name</argument> |
---|
158 | </request> |
---|
159 | </sloot-profile> |
---|
160 | <sloot-profile name="schemaFile_dpml.generateResponse.getFileContent"> |
---|
161 | <request assignment="response"> |
---|
162 | <identifier>active:org.isocat.schemacat.access.data.schema.file</identifier> |
---|
163 | <argument name="file-name">arg:file-name</argument> |
---|
164 | <argument name="schema-path">this:schema-path</argument> |
---|
165 | <argument name="schema-files-subPath">this:schemata-filesSubPath</argument> |
---|
166 | </request> |
---|
167 | </sloot-profile> |
---|
168 | <sloot-profile name="schemaFile_dpml.generateResponse.computeContentDisposition"> |
---|
169 | <if assignment="content-disposition"> |
---|
170 | <cond method="identity"> |
---|
171 | <request> |
---|
172 | <identifier>arg:download</identifier> |
---|
173 | </request> |
---|
174 | </cond> |
---|
175 | <then> |
---|
176 | <literal type="string">attachment</literal> |
---|
177 | </then> |
---|
178 | <else> |
---|
179 | <literal type="string">inline</literal> |
---|
180 | </else> |
---|
181 | </if> |
---|
182 | </sloot-profile> |
---|
183 | <sloot-profile name="schemaFile_dpml.generateResponse.getMime"> |
---|
184 | <request assignment="schema-mime"> |
---|
185 | <identifier>active:org.isocat.schemacat.access.data.schema.file.mime</identifier> |
---|
186 | <argument name="schemaID">arg:schemaID</argument> |
---|
187 | <argument name="file-name">arg:file-name</argument> |
---|
188 | </request> |
---|
189 | </sloot-profile> |
---|
190 | <sloot-profile name="schemaFile_dpml.generateResponse.configResponse"> |
---|
191 | <request assignment="response-config"> |
---|
192 | <identifier>active:sloot.xquery</identifier> |
---|
193 | <argument name="operator"> |
---|
194 | <literal type="xml"> |
---|
195 | <query> |
---|
196 | <config> |
---|
197 | <header name="httpResponse:/header/Cache-Control">{$cache-control}</header> |
---|
198 | <header name="mime">{$schema-mime}</header> |
---|
199 | <header name="httpResponse:/header/Content-Disposition">{$content-disposition}</header> |
---|
200 | <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header> |
---|
201 | </config> |
---|
202 | </query> |
---|
203 | </literal> |
---|
204 | </argument> |
---|
205 | <argument name="cache-control">this:cache-control</argument> |
---|
206 | <argument name="schema-mime">this:schema-mime</argument> |
---|
207 | <argument name="content-disposition">this:content-disposition</argument> |
---|
208 | </request> |
---|
209 | </sloot-profile> |
---|
210 | <sloot-profile name="schemaFile_dpml.generateResponse.modifyResponse"> |
---|
211 | <modify-response assignment="response"> |
---|
212 | <operand>this:response</operand> |
---|
213 | <config>this:response-config</config> |
---|
214 | </modify-response> |
---|
215 | </sloot-profile> |
---|
216 | </sequence> |
---|
217 | </then> |
---|
218 | <else> |
---|
219 | <request> |
---|
220 | <identifier>active:interface.rest.HTTPresponse.forbidden</identifier> |
---|
221 | </request> |
---|
222 | </else> |
---|
223 | </if> |
---|
224 | </sloot-profile> |
---|
225 | <sloot-debug> |
---|
226 | <request> |
---|
227 | <verb>SINK</verb> |
---|
228 | <identifier>res:/debug/org.isocat.schemacat.interface.rest.schema.file.response.xml</identifier> |
---|
229 | <argument name="primary">this:response</argument> |
---|
230 | </request> |
---|
231 | </sloot-debug> |
---|
232 | </sloot-profile> |
---|
233 | </sequence> |
---|