Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- xquery version "3.0";
- (: spec - http://claudius108.users.sourceforge.net/specs/expath/ft-client/ft-client.html :)
- import module "http://expath.org/ns/ft-client";
- import module namespace functx="http://www.functx.com";
- declare namespace ft-client="http://expath.org/ns/ft-client";
- declare variable $local:local-folder := '/eXist-db/webapp/WEB-INF/data/export/';
- declare variable $local:ftp-uri := xs:anyURI('ftp://anonymous:anonymous@asc.harvard.edu');
- declare variable $local:remote-folder := '/pub/incoming/misztur/';
- declare variable $local:remove-resource := 'full20131122-1140.zip';
- declare variable $local:retrieve-resource := 'report-20131122114035392.log';
- for $ftp-connection in ft-client:connect($local:ftp-uri)
- return
- try
- {
- let $mkdir-on-ftp := ft-client:store-resource(
- $ftp-connection,
- $local:remote-folder, ())
- let $transfer-to-ftp := 'skipped'
- (:for $local-file in file:list($local:local-folder)/file:file
- return
- ft-client:store-resource(
- $ftp-connection,
- $local:remote-folder || $local-file/@name/string(),
- file:read-binary($local:local-folder || $local-file/@name/string())):)
- let $file-list-post-store := 'skipped'
- (:ft-client:list-resources($ftp-connection,$local:remote-folder):)
- let $remove-resource-from-ftp := 'skipped'
- (:ft-client:delete-resource($ftp-connection,$local:remote-folder||$local:remove-resource):)
- let $retrieve-start := util:system-dateTime()
- let $retrieve-resource-from-ftp :=
- ft-client:retrieve-resource($ftp-connection,$local:remote-folder||$local:retrieve-resource)
- let $retrieve-end := util:system-dateTime()
- let $ftp-disconnect := ft-client:disconnect($ftp-connection)
- return
- element results
- {
- element ftp-connect { $ftp-connection },
- element mkdir-on-ftp { $mkdir-on-ftp },
- element transfer-to-ftp { $transfer-to-ftp },
- element file-list-post-store { $file-list-post-store },
- element remove-resource-from-ftp { $remove-resource-from-ftp },
- element retrieve-resource-from-ftp { $retrieve-resource-from-ftp },
- element retrieve-resource-duration { functx:total-seconds-from-duration($retrieve-end - $retrieve-start)||' second(s)' },
- element ftp-disconnect { $ftp-disconnect }
- }
- }
- catch *
- {
- let $ftp-disconnect := ft-client:disconnect($ftp-connection)
- return
- element exception
- {
- element ftp-disconnected { $ftp-disconnect },
- element err-code { $err:code },
- element err-desc { $err:description },
- element err-value { $err:value }
- }
- }
- (:let $file := ft-client:retrieve-resource($ftp-connection,
- '/VOLUME1/FTP/nosql.sync-io.net/'||'report-20131225081630605.log'):)
- (:(
- for $file at $position in $files/ft-client:resources-list/ft-client:resource
- where ends-with($file/@name/string(), '.log')
- order by xs:dateTime($file/@last-modified) descending
- return $file
- )[1]
- /@name/string()):)
- (: return
- for $remote-file in $files/ft-client:resources-list/ft-client:resource
- where xs:dateTime($remote-file/@last-modified) lt (util:system-dateTime() - functx:dayTimeDuration(0,12,0,0))
- return $remote-file :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement