(:~ 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)
};