Created
April 14, 2010 23:22
-
-
Save dscape/366471 to your computer and use it in GitHub Desktop.
Exploring rest in marklogic
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: start by pointing the url-rewriter to 'rewrite.xqy' | |
:) | |
xdmp:get-request-path() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: fix for params not working | |
:) | |
let $path := xdmp:get-request-path() | |
return fn:concat($path, "?" , fn:string-join( | |
for $field in xdmp:get-request-field-names() | |
return fn:concat($field, "=", xdmp:url-encode(xdmp:get-request-field($field))) | |
, "&") ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: default in a function | |
:) | |
declare function local:default( $path ) { | |
fn:concat( $path, "?" , fn:string-join( | |
for $field in xdmp:get-request-field-names() | |
return fn:concat( $field, "=", | |
xdmp:url-encode(xdmp:get-request-field( $field ) ) ), "&" ) ) } ; | |
let $path := xdmp:get-request-path() | |
return local:default( $path ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: supporting all paths | |
:) | |
declare function local:get-uri-encoded-fields() { | |
let $fields := fn:string-join( for $field in xdmp:get-request-field-names() | |
return fn:concat( $field, "=", | |
xdmp:url-encode(xdmp:get-request-field( $field ) ) ), "&" ) | |
return if ($fields) then fn:concat("?", $fields) else "" } ; | |
declare function local:default( $path ) { | |
fn:concat( $path, local:get-uri-encoded-fields() ) } ; | |
declare function local:requested-root ( $path ) { fn:matches($path, "^/$") } ; | |
declare function local:requested-new ( $path ) { | |
fn:matches($path, "^/new$") } ; | |
declare function local:requested-show ( $path ) { | |
fn:matches($path, "^/show/\.*") } ; | |
declare function local:show( $path ) { | |
fn:concat( "show.xqy?uri=/", fn:replace($path, "^/show/(\.*)", "$2") ) }; | |
let $path := xdmp:get-request-path() | |
return | |
if ( local:requested-root ( $path ) ) | |
then "index.xqy" | |
else | |
if ( local:requested-new ( $path ) ) | |
then fn:concat( "new.xqy", local:get-uri-encoded-fields() ) | |
else | |
if ( local:requested-show ( $path ) ) | |
then local:show( $path ) | |
else fn:concat( $path, local:get-uri-encoded-fields() ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
xquery version "1.0-ml"; | |
module namespace h = "helpers"; | |
declare function h:link_to_index() { | |
<a href="/" xmlns="http://www.w3.org/1999/xhtml">Back to main</a> } ; | |
declare function h:link_to_new() { | |
<a href="/new" xmlns="http://www.w3.org/1999/xhtml">Add new</a> } ; | |
declare function h:link_to_show( $path ) { | |
fn:concat( '/show', $path ) }; | |
declare function h:article-submission-action() { "/new" } ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: removing the fallback | |
:) | |
declare function local:get-uri-encoded-fields() { | |
let $fields := fn:string-join( for $field in xdmp:get-request-field-names() | |
return fn:concat( $field, "=", | |
xdmp:url-encode(xdmp:get-request-field( $field ) ) ), "&" ) | |
return if ($fields) then fn:concat("?", $fields) else "" } ; | |
declare function local:default( $path ) { | |
fn:concat( $path, local:get-uri-encoded-fields() ) } ; | |
declare function local:requested-root ( $path ) { fn:matches($path, "^/$") } ; | |
declare function local:requested-new ( $path ) { | |
fn:matches($path, "^/new$") } ; | |
declare function local:requested-show ( $path ) { | |
fn:matches($path, "^/show/\.*") } ; | |
declare function local:show( $path ) { | |
fn:concat( "show.xqy?uri=/", fn:replace($path, "^/show/(\.*)", "$2") ) }; | |
let $path := xdmp:get-request-path() | |
return | |
if ( local:requested-root ( $path ) ) | |
then "index.xqy" | |
else | |
if ( local:requested-new ( $path ) ) | |
then fn:concat( "new.xqy", local:get-uri-encoded-fields() ) | |
else | |
if ( local:requested-show ( $path ) ) | |
then local:show( $path ) | |
else "404.xqy" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: re-adding the fallback for images and css | |
:) | |
declare function local:get-uri-encoded-fields() { | |
let $fields := fn:string-join( for $field in xdmp:get-request-field-names() | |
return fn:concat( $field, "=", | |
xdmp:url-encode(xdmp:get-request-field( $field ) ) ), "&" ) | |
return if ($fields) then fn:concat("?", $fields) else "" } ; | |
declare function local:default( $path ) { | |
fn:concat( $path, local:get-uri-encoded-fields() ) } ; | |
declare function local:requested-root ( $path ) { fn:matches($path, "^/$") } ; | |
declare function local:requested-new ( $path ) { | |
fn:matches($path, "^/new$") } ; | |
declare function local:requested-show ( $path ) { | |
fn:matches($path, "^/show/\.*") } ; | |
declare function local:show( $path ) { | |
fn:concat( "show.xqy?uri=/", fn:replace($path, "^/show/(\.*)", "$2") ) }; | |
declare function local:is-image-or-css( $path ) { | |
let $extension := fn:tokenize($path, "\.")[2] | |
let $_ := xdmp:set-response-content-type(xdmp:uri-content-type($path)) | |
return ( $extension = ("png", "css", "jpg", "gif") ) } ; | |
let $path := xdmp:get-request-path() | |
return | |
if ( local:requested-root ( $path ) ) | |
then "index.xqy" | |
else | |
if ( local:requested-new-article ( $path ) ) | |
then fn:concat( "new.xqy", local:get-uri-encoded-fields() ) | |
else | |
if ( local:requested-show-article ( $path ) ) | |
then local:show( $path ) | |
else | |
if (local:is-image-or-css( $path )) (: show be up, many img requests :) | |
then $path | |
else "404.xqy" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
xquery version "1.0-ml"; | |
module namespace h = "helpers"; | |
declare function h:link_to_index() { | |
<a href="/" xmlns="http://www.w3.org/1999/xhtml">Back to main</a> } ; | |
declare function h:link_to_new() { | |
<a href="/article" xmlns="http://www.w3.org/1999/xhtml">Add new</a> } ; | |
declare function h:link_to_show( $path ) { | |
fn:concat( '/article', $path ) }; | |
declare function h:article-submission-action() { "/article" } ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: | |
: re-adding the fallback for images and css | |
:) | |
declare function local:get-uri-encoded-fields() { | |
let $fields := fn:string-join( for $field in xdmp:get-request-field-names() | |
return fn:concat( $field, "=", | |
xdmp:url-encode(xdmp:get-request-field( $field ) ) ), "&" ) | |
return if ($fields) then fn:concat("?", $fields) else "" } ; | |
declare function local:default( $path ) { | |
fn:concat( $path, local:get-uri-encoded-fields() ) } ; | |
declare function local:requested-root ( $path ) { fn:matches($path, "^/$") } ; | |
declare function local:requested-new-article ( $path ) { | |
fn:matches($path, "^/article$") } ; | |
declare function local:requested-show-article ( $path ) { | |
fn:matches($path, "^/article/\.*") } ; | |
declare function local:show( $path ) { | |
fn:concat( "show.xqy?uri=/", fn:replace($path, "^/article/(\.*)", "$2") ) }; | |
declare function local:is-image-or-css( $path ) { | |
let $extension := fn:tokenize($path, "\.")[2] | |
let $_ := xdmp:set-response-content-type(xdmp:uri-content-type($path)) | |
return ( $extension = ("png", "css", "jpg", "gif") ) } ; | |
let $path := xdmp:get-request-path() | |
return | |
if ( local:requested-root ( $path ) ) | |
then "index.xqy" | |
else | |
if ( local:requested-new-article ( $path ) ) | |
then fn:concat( "new.xqy", local:get-uri-encoded-fields() ) | |
else | |
if ( local:requested-show-article ( $path ) ) | |
then local:show( $path ) | |
else | |
if (local:is-image-or-css( $path )) (: show be up, many img requests :) | |
then $path | |
else "404.xqy" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment