@@ -11,6 +11,7 @@ xquery version "3.1";
11
11
import module namespace config="http://exist-db.org/xquery/apps/config" at "config.xqm" ;
12
12
import module namespace log="http://exist-db.org/xquery/app/log" at "log.xqm" ;
13
13
14
+ declare namespace compression="http://exist-db.org/xquery/compression" ;
14
15
declare namespace request="http://exist-db.org/xquery/request" ;
15
16
declare namespace response="http://exist-db.org/xquery/response" ;
16
17
declare namespace util="http://exist-db.org/xquery/util" ;
@@ -40,9 +41,10 @@ declare function local:log-package-not-found-event($filename as xs:string) as em
40
41
41
42
42
43
let $filename := request:get-parameter ("filename" , ())
44
+ let $wants-zip as xs:boolean := ends-with ($filename, ".zip" )
43
45
let $xar-filename :=
44
46
(: strip .zip from resource name :)
45
- if (ends-with ($filename, ". zip" ) ) then
47
+ if ($wants- zip) then
46
48
replace ($filename, ".zip$" , "" )
47
49
else
48
50
$filename
@@ -52,7 +54,13 @@ return
52
54
let $xar := util:binary-doc ($config:packages-col || "/" || $xar-filename)
53
55
let $log := local:log-get-package-event ($xar-filename)
54
56
return
55
- response:stream-binary ($xar, "application/zip" )
57
+ if ($wants-zip) then
58
+ let $entry := <entry type = "binary" method = "store" name = "/{$xar-filename} " strip-prefix = "false" >{$xar}</entry>
59
+ let $zip := compression:zip ($entry, false ())
60
+ return
61
+ response:stream-binary ($zip, "application/zip" )
62
+ else
63
+ response:stream-binary ($xar, "application/zip" )
56
64
else
57
65
(
58
66
response:set-status-code (404 ),
0 commit comments