xquery version "1.0";
declare namespace json="http://www.json.org";
declare namespace output="http://exquery.org/ns/rest/annotation/output";
declare namespace rest="http://exquery.org/ns/restxq";
(:
: Main controller. Uses restxq to keep the code clean. This only works with the XQuery
: implementation of RestXQ though.
:)
import module namespace restxq="http://exist-db.org/xquery/restxq" at "../../demo/modules/restxq.xql";
import module namespace ristenxq="http://exist-db.org/apps/restxq/ristenxq" at "restxq-risten.xql";
(: Need to use a different namespace here to prevent the restxq java triggger
: from evaluating the annotations. :)
declare namespace restx="http://exist-db.org/ns/rest/annotation/xquery";
declare variable $exist:path external;
declare variable $exist:resource external;
declare variable $exist:controller external;
declare variable $exist:prefix external;
declare variable $exist:root external;
(:~
: Redirect requests for / to demo.html.
:)
(:
if ($exist:path = "/") then
:)
if (ends-with($exist:path, ".html")) then
else if (starts-with($exist:path, ("/risten/"))) then
let $functions := util:list-functions("http://exist-db.org/apps/restxq/ristenxq")
return
(: All URL paths are processed by the restxq module :)
restxq:process($exist:path, $functions)
else if (starts-with($exist:path, "/resources")) then
(: images, css are contained in the top /resources/ collection. :)
(: Relative path requests from sub-collections are redirected there :)
else