Initial commit: GET requests

This commit is contained in:
Dimitri Lozeve 2023-10-01 17:01:26 +02:00
commit 9bb42177d8
5 changed files with 193 additions and 0 deletions

74
curl.bqn Normal file
View file

@ -0,0 +1,74 @@
Get
easyInit,
easyCleanup,
easySetoptStr,
easySetoptPtr,
easySetoptLong,
easyPerform,
easyGetinfoStr,
easyGetinfoLong,
easyGetinfoDouble,
slistAppend,
slistFreeAll,
fopen,
fclose,
options,
info
•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,options.useragent,"curl/bqn"@
("Error setting user agent: "•Fmt ruseragent)!ruseragent=0
rurlEasySetoptStrsession,options.url,url@
("Error setting URL: "•Fmt rurl)!rurl=0
rfileEasySetoptPtrsession,options.writedata,filePtr
("Error setting file target: "•Fmt rfile)!rfile=0
rheaderfileEasySetoptPtrsession,options.headerdata,headerFilePtr
("Error setting header file target: "•Fmt rheaderfile)!rheaderfile=0
rredirectEasySetoptLongsession,options.followlocation,1
("Error setting redirect option: "•Fmt rredirect)!rredirect=0
# EasySetoptLong⟨session,options.header,1⟩
# EasySetoptLong⟨session,options.verbose,1⟩
slist(80){SlistAppend𝕩,𝕨@}´headers
rheadersEasySetoptPtrsession,options.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0
rperformEasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
SlistFreeAll slist
rcodecodeEasyGetinfoLongsession,info.responseCode,0
("Error retrieving response code: "•Fmt rcode)!rcode=0
# ("Request failed with status code "∾•Fmt code)!2=⌊code÷100
rtimetimeEasyGetinfoDoublesession,info.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
EasyCleanup session
{
codecode,
timetime,
headersresponseHeaders,
contentcontent,
}
}