Refactor GET and POST requests

This commit is contained in:
Dimitri Lozeve 2023-10-01 18:14:54 +02:00
parent 4ff2099e99
commit 5b22260f28
2 changed files with 27 additions and 56 deletions

View file

@ -19,17 +19,13 @@
•Import"ffi.bqn"
RandID•Import"utils.bqn"
Get{
𝕊 url: 𝕊 url ;
headers 𝕊 url:
PrepareRequest{session 𝕊 urlheaders:
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@
@ -47,27 +43,26 @@ headers 𝕊 url:
rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0
rperform←EasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
slistfilenamefilePtrheaderFilenameheaderFilePtr
}
ReadResponse{session 𝕊 slistfilenamefilePtrheaderFilenameheaderFilePtr:
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,
@ -76,65 +71,36 @@ headers 𝕊 url:
}
}
Get{
𝕊 url: 𝕊 url ;
headers 𝕊 url:
sessionEasyInit
dsession PrepareRequest urlheaders
rperformEasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
responsesession ReadResponse d
EasyCleanup session
response
}
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
dsession PrepareRequest urlheaders
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
responsesession ReadResponse d
EasyCleanup session
{
codecode,
timetime,
headersresponseHeaders,
contentcontent,
}
response
}

View file

@ -1,5 +1,10 @@
Get,Post•Import"curl.bqn"
rGet"http://localhost:8080/get"
r.code
r.headers
r.content
r"Content-Type: application/json"Post"http://localhost:8080/post""{""key"": ""value""}"
r.code
r.headers