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" •Import"ffi.bqn"
RandID•Import"utils.bqn" RandID•Import"utils.bqn"
Get{ PrepareRequest{session 𝕊 urlheaders:
𝕊 url: 𝕊 url ;
headers 𝕊 url:
idRandID 32 idRandID 32
filename"/tmp/bqncurl."id filename"/tmp/bqncurl."id
filePtrFopenfilename@,"w+" filePtrFopenfilename@,"w+"
headerFilename"/tmp/bqncurl.header."id headerFilename"/tmp/bqncurl.header."id
headerFilePtrFopenheaderFilename@,"w+" headerFilePtrFopenheaderFilename@,"w+"
sessionEasyInit
ruseragentEasySetoptStrsession,curlOptions.useragent,"curl/bqn"@ ruseragentEasySetoptStrsession,curlOptions.useragent,"curl/bqn"@
("Error setting user agent: "•Fmt ruseragent)!ruseragent=0 ("Error setting user agent: "•Fmt ruseragent)!ruseragent=0
rurlEasySetoptStrsession,curlOptions.url,url@ rurlEasySetoptStrsession,curlOptions.url,url@
@ -47,27 +43,26 @@ headers 𝕊 url:
rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0 ("Error setting headers: "•Fmt rheaders)!rheaders=0
rperform←EasyPerformsession slistfilenamefilePtrheaderFilenameheaderFilePtr
("Error performing request: "•Fmt rperform)!rperform=0 }
ReadResponse{session 𝕊 slistfilenamefilePtrheaderFilenameheaderFilePtr:
SlistFreeAll slist SlistFreeAll slist
rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0 rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0
("Error retrieving response code: "•Fmt rcode)!rcode=0 ("Error retrieving response code: "•Fmt rcode)!rcode=0
# ("Request failed with status code "∾•Fmt code)!2=⌊code÷100
rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0 rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0
("Error retrieving request time: "•Fmt rtime)!rtime=0 ("Error retrieving request time: "•Fmt rtime)!rtime=0
Fclose filePtr Fclose filePtr
Fclose headerFilePtr Fclose headerFilePtr
content•file.Bytes filename content•file.Bytes filename
responseHeaders•file.Chars headerFilename responseHeaders•file.Chars headerFilename
•file.Remove filename •file.Remove filename
•file.Remove headerFilename •file.Remove headerFilename
EasyCleanup session
{ {
codecode, codecode,
timetime, 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{ Post{
𝕊 urldata: 𝕊 urldata ; 𝕊 urldata: 𝕊 urldata ;
headers 𝕊 urldata: headers 𝕊 urldata:
idRandID 32
filename"/tmp/bqncurl."id
filePtrFopenfilename@,"w+"
headerFilename"/tmp/bqncurl.header."id
headerFilePtrFopenheaderFilename@,"w+"
sessionEasyInit sessionEasyInit
dsession PrepareRequest urlheaders
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 rpostEasySetoptLongsession,curlOptions.post,1
("Error setting up POST request: "•Fmt rpost)!rpost=0 ("Error setting up POST request: "•Fmt rpost)!rpost=0
rpostfieldsEasySetoptStrsession,curlOptions.postfields,data rpostfieldsEasySetoptStrsession,curlOptions.postfields,data
("Error setting POST data: "•Fmt rpostfields)!rpostfields=0 ("Error setting POST data: "•Fmt rpostfields)!rpostfields=0
rpostfieldsizeEasySetoptLongsession,curlOptions.postfieldsize,data rpostfieldsizeEasySetoptLongsession,curlOptions.postfieldsize,data
("Error setting POST data size: "•Fmt rpostfieldsize)!rpostfieldsize=0 ("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 rperformEasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0 ("Error performing request: "•Fmt rperform)!rperform=0
SlistFreeAll slist responsesession ReadResponse d
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 EasyCleanup session
response
{
codecode,
timetime,
headersresponseHeaders,
contentcontent,
}
} }

View file

@ -1,5 +1,10 @@
Get,Post•Import"curl.bqn" 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"Content-Type: application/json"Post"http://localhost:8080/post""{""key"": ""value""}"
r.code r.code
r.headers r.headers