(:~ post utils :) module namespace qform = 'urn:quodatum:http.form'; (:~ post form data in $fields to $url RR style @param $url http server target @param $fields map if key starts @ value is file path to upload :) declare function qform:post-form($fields as map(*), $url as xs:string) as item(){ let $names:= map:keys($fields) let $req:= { for $name in $names return ( if(starts-with($name,"@")) then let $file:=$fields($name) return else , ) } let $result:= http:send-request($req=>trace("REQ"), $url, for $name in $names return if(starts-with($name,"@")) then unparsed-text($fields($name))=>trace("EE") else $fields($name) ) return if($result[1]/@status eq "200") then $result[2] else error(xs:QName("qform:post-form"),$result[1]/@message) }; (:~ post json data in $fields to $url OLLAMA style :) declare function qform:post-json($fields as map(*), $url as xs:string) as item(){ let $req:= let $body:= serialize($fields,map{"method":"json"}) let $result:= http:send-request($req, $url, $body) return if($result[1]/@status eq "200") then $result[2] else error(xs:QName("qform:post-json"),$result[1]/@message) }; (:~ post json data in $fields to $url mermaid style :) declare function qform:post-text($text as xs:string, $url as xs:string) as item(){ let $req:= return http:send-request($req, $url, $text) =>qform:check("qform:post-text") }; declare function qform:check($result as item()+, $code as xs:string) as item(){ if($result[1]/@status eq "200") then $result[2] else error(xs:QName($code),$result[1]/@message) };