dba/databases
library moduleR
Summary
Download resources.
- Authors
- Christian Grün, BaseX Team 2005-23, BSD License
Imports
This module is imported by 0 modules. It imports 0 modules.
Variables
None
Functions
4.1 dba:db-download
Arities: #2R
dba:db-download
(
$name
as
xs:string
, $resource
as
xs:string
) as
item()+
- name
as
xs:string
- resource
as
xs:string
item() +
Invoked by 0 functions from 0 modules
Annotations (3)
%rest:path | ('/dba/db-download') |
%rest:query-param | ('name','{$name}') |
%rest:query-param | ('resource','{$resource}') |
Source ( 23 lines)
function dba:db-download(
$name as xs:string,
$resource as xs:string
) as item()+ {
try {
web:response-header(
map { 'media-type': db:content-type($name, $resource) },
map { 'Content-Disposition': 'attachment; filename=' || $resource }
),
let $type := db:type($name, $resource)
return if($type = 'xml') then (
db:get($name, $resource)
) else if($type = 'binary') then (
db:get-binary($name, $resource)
) else (
db:get-value($name, $resource)
)
} catch * {
<rest:response>
<http:response status='400' message='{ $err:description }'/>
</rest:response>
}
}
Namespaces
The following namespaces are defined:
Prefix | Uri |
---|---|
db | http://basex.org/modules/db |
dba | dba/databases 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
err | http://www.w3.org/2005/xqt-errors |
http | http://expath.org/ns/http-client |
rest | http://exquery.org/ns/restxq |
web | http://basex.org/modules/web |
xs | http://www.w3.org/2001/XMLSchema |
Source Code
(:~
: Download resources.
:
: @author Christian Grün, BaseX Team 2005-23, BSD License
:)
module namespace dba = 'dba/databases';
(:~
: Downloads a resource.
: @param $name database
: @param $resource resource
: @param $file file name (ignored)
: @return rest response and file content
:)
declare
%rest:path('/dba/db-download')
%rest:query-param('name', '{$name}')
%rest:query-param('resource', '{$resource}')
function dba:db-download(
$name as xs:string,
$resource as xs:string
) as item()+ {
try {
web:response-header(
map { 'media-type': db:content-type($name, $resource) },
map { 'Content-Disposition': 'attachment; filename=' || $resource }
),
let $type := db:type($name, $resource)
return if($type = 'xml') then (
db:get($name, $resource)
) else if($type = 'binary') then (
db:get-binary($name, $resource)
) else (
db:get-value($name, $resource)
)
} catch * {
<rest:response>
<http:response status='400' message='{ $err:description }'/>
</rest:response>
}
};