xquery version "3.1"; (: : Copyright (c) 2018 Uwe Sikora : Copyright (c) 2018–2019 Michelle Weidling : Copyright (c) 2020 Stefan Hynek : : This file is part of intermediate-format. : : intermediate-format is free software: you can redistribute it and/or modify : it under the terms of the GNU General Public License as published by : the Free Software Foundation, either version 3 of the License, or : (at your option) any later version. : : intermediate-format is distributed in the hope that it will be useful, : but WITHOUT ANY WARRANTY; without even the implied warranty of : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the : GNU General Public License for more details. : : You should have received a copy of the GNU General Public License : along with intermediate-format. If not, see <https://www.gnu.org/licenses/>. :) (:~ : INTERMEDIATEFORMAT Utils Module ("ifutils", "http://bdn.edition.de/intermediate_format/utils") : ******************************************************************************************* : This modules defines helpfull functions used all over the app : : @version 1.0 (2018-02-23) : @status developing : @author Uwe Sikora :) module namespace ifutils="http://bdn-edition.de/intermediate_format/utils"; import module namespace http = "http://expath.org/ns/http-client"; (:############################# Modules Variables #############################:) (:############################# Modules Functions #############################:) (:~ : ifutils:exists() : This function checks if a resource exists in a directory : : @param $uri the uri of a resource : @return xs:boolean ('true' else 'false') : : @version 1.0 (2018-03-23) : @status working : @author Uwe Sikora :) declare function ifutils:exists ( $uri as xs:string ) { let $files := (for $i in collection(replace($uri, '(.+)/.+$', '$1')) return base-uri($i)) return $uri = $files }; (:~ : ifutils:get-resource() : This function gets a resource from the database or from a online source : : @param $uri the uri of a resource : @return document-node : : @version 1.0 (2018-03-23) : @status developing : @author Uwe Sikora :) declare function ifutils:get-resource ( $uri as xs:string ) { let $resource := ( if ( ifutils:exists($uri) ) then ( doc($uri) ) else () ) return $resource }; (:~ : ifutils:ls() : This function lists all documents from a collection : : @param $collection the path of a collection : @return all document-base-uris from the collection : : @version 1.0 (2018-03-23) : @status developing : @author Uwe Sikora :) declare function ifutils:ls ( $collection as xs:string ) { for $doc in collection($collection) return base-uri($doc) }; (:~ : ifutils:request() : This http wrapper function models a request : : @param $uri the uri of a resource : @param $method the http method : @param $username the username : @param $password the password : @return http-response : : @version 1.0 (2018-03-23) : @status developing : @author Uwe Sikora :) declare function ifutils:request ($url as xs:string, $method as xs:string, $username as xs:string?, $password as xs:string? ) { let $req := <http:request href="{ $url }" method="{ $method }" username="{ $username }" password="{ $password }" auth-method="basic" send-authorization="true"/> return http:send-request($req) };