bqn-curl/curl.bqn

140 lines
4.7 KiB
BQN
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Get,Post
easyInit,
easyCleanup,
easySetoptStr,
easySetoptPtr,
easySetoptLong,
easyPerform,
easyGetinfoStr,
easyGetinfoLong,
easyGetinfoDouble,
slistAppend,
slistFreeAll,
fopen,
fclose,
curlOptions,
curlInfo
•Import"ffi.bqn"
RandID•Import"utils.bqn"
Get{
𝕊 url: 𝕊 url ;
headers 𝕊 url:
idRandID 32
filename"/tmp/bqncurl."id
filePtrFopenfilename@,"w+"
headerFilename"/tmp/bqncurl.header."id
headerFilePtrFopenheaderFilename@,"w+"
sessionEasyInit
ruseragentEasySetoptStrsession,curlOptions.useragent,"curl/bqn"@
("Error setting user agent: "•Fmt ruseragent)!ruseragent=0
rurlEasySetoptStrsession,curlOptions.url,url@
("Error setting URL: "•Fmt rurl)!rurl=0
rfileEasySetoptPtrsession,curlOptions.writedata,filePtr
("Error setting file target: "•Fmt rfile)!rfile=0
rheaderfileEasySetoptPtrsession,curlOptions.headerdata,headerFilePtr
("Error setting header file target: "•Fmt rheaderfile)!rheaderfile=0
rredirectEasySetoptLongsession,curlOptions.followlocation,1
("Error setting redirect option: "•Fmt rredirect)!rredirect=0
# EasySetoptLong⟨session,curlOptions.header,1⟩
# EasySetoptLong⟨session,curlOptions.verbose,1⟩
slist(80){SlistAppend𝕩,𝕨@}´headers
rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0
rperformEasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
SlistFreeAll slist
rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0
("Error retrieving response code: "•Fmt rcode)!rcode=0
# ("Request failed with status code "∾•Fmt code)!2=⌊code÷100
rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0
("Error retrieving request time: "•Fmt rtime)!rtime=0
Fclose filePtr
Fclose headerFilePtr
content•file.Bytes filename
responseHeaders•file.Chars headerFilename
•file.Remove filename
•file.Remove headerFilename
EasyCleanup session
{
codecode,
timetime,
headersresponseHeaders,
contentcontent,
}
}
Post{
𝕊 urldata: 𝕊 urldata ;
headers 𝕊 urldata:
idRandID 32
filename"/tmp/bqncurl."id
filePtrFopenfilename@,"w+"
headerFilename"/tmp/bqncurl.header."id
headerFilePtrFopenheaderFilename@,"w+"
sessionEasyInit
ruseragentEasySetoptStrsession,curlOptions.useragent,"curl/bqn"@
("Error setting user agent: "•Fmt ruseragent)!ruseragent=0
rurlEasySetoptStrsession,curlOptions.url,url@
("Error setting URL: "•Fmt rurl)!rurl=0
rfileEasySetoptPtrsession,curlOptions.writedata,filePtr
("Error setting file target: "•Fmt rfile)!rfile=0
rheaderfileEasySetoptPtrsession,curlOptions.headerdata,headerFilePtr
("Error setting header file target: "•Fmt rheaderfile)!rheaderfile=0
rredirectEasySetoptLongsession,curlOptions.followlocation,1
("Error setting redirect option: "•Fmt rredirect)!rredirect=0
rpostEasySetoptLongsession,curlOptions.post,1
("Error setting up POST request: "•Fmt rpost)!rpost=0
rpostfieldsEasySetoptStrsession,curlOptions.postfields,data
("Error setting POST data: "•Fmt rpostfields)!rpostfields=0
rpostfieldsizeEasySetoptLongsession,curlOptions.postfieldsize,data
("Error setting POST data size: "•Fmt rpostfieldsize)!rpostfieldsize=0
# EasySetoptLong⟨session,curlOptions.header,1⟩
# EasySetoptLong⟨session,curlOptions.verbose,1⟩
slist(80){SlistAppend𝕩,𝕨@}´headers
rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0
rperformEasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
SlistFreeAll slist
rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0
("Error retrieving response code: "•Fmt rcode)!rcode=0
# ("Request failed with status code "∾•Fmt code)!2=⌊code÷100
rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0
("Error retrieving request time: "•Fmt rtime)!rtime=0
Fclose filePtr
Fclose headerFilePtr
content•file.Bytes filename
responseHeaders•file.Chars headerFilename
•file.Remove filename
•file.Remove headerFilename
EasyCleanup session
{
codecode,
timetime,
headersresponseHeaders,
contentcontent,
}
}