Refactor error handling

This commit is contained in:
Dimitri Lozeve 2023-10-01 18:38:45 +02:00
parent 5b22260f28
commit d37b15ab2b

View file

@ -19,6 +19,11 @@
•Import"ffi.bqn" •Import"ffi.bqn"
RandID•Import"utils.bqn" RandID•Import"utils.bqn"
Check{
msg"Curl: "𝕨" ("(•Fmt 𝕩)")"
msg ! 𝕩=0
}
PrepareRequest{session 𝕊 urlheaders: PrepareRequest{session 𝕊 urlheaders:
idRandID 32 idRandID 32
filename"/tmp/bqncurl."id filename"/tmp/bqncurl."id
@ -26,22 +31,14 @@ PrepareRequest←{session 𝕊 url‿headers:
headerFilename"/tmp/bqncurl.header."id headerFilename"/tmp/bqncurl.header."id
headerFilePtrFopenheaderFilename@,"w+" headerFilePtrFopenheaderFilename@,"w+"
ruseragentEasySetoptStrsession,curlOptions.useragent,"curl/bqn"@ "setting user agent"Check EasySetoptStrsession,curlOptions.useragent,"curl/bqn"@
("Error setting user agent: "•Fmt ruseragent)!ruseragent=0 "setting URL"Check EasySetoptStrsession,curlOptions.url,url@
rurlEasySetoptStrsession,curlOptions.url,url@ "setting file target"Check EasySetoptPtrsession,curlOptions.writedata,filePtr
("Error setting URL: "•Fmt rurl)!rurl=0 "setting header file target"Check EasySetoptPtrsession,curlOptions.headerdata,headerFilePtr
rfileEasySetoptPtrsession,curlOptions.writedata,filePtr "setting redirect option"Check EasySetoptLongsession,curlOptions.followlocation,1
("Error setting file target: "•Fmt rfile)!rfile=0 # "setting verbosity"Check EasySetoptLong⟨session,curlOptions.verbose,1⟩
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 slist(80){SlistAppend𝕩,𝕨@}´headers
rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist "setting headers"Check rheadersEasySetoptPtrsession,curlOptions.httpHeader,slist
("Error setting headers: "•Fmt rheaders)!rheaders=0
slistfilenamefilePtrheaderFilenameheaderFilePtr slistfilenamefilePtrheaderFilenameheaderFilePtr
} }
@ -50,9 +47,9 @@ ReadResponse←{session 𝕊 slist‿filename‿filePtr‿headerFilename‿heade
SlistFreeAll slist SlistFreeAll slist
rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0 rcodecodeEasyGetinfoLongsession,curlInfo.responseCode,0
("Error retrieving response code: "•Fmt rcode)!rcode=0 "retrieving response code"Check rcode
rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0 rtimetimeEasyGetinfoDoublesession,curlInfo.totalTime,0.0
("Error retrieving request time: "•Fmt rtime)!rtime=0 "retrieving request time"Check rtime
Fclose filePtr Fclose filePtr
Fclose headerFilePtr Fclose headerFilePtr
@ -77,8 +74,7 @@ headers 𝕊 url:
sessionEasyInit sessionEasyInit
dsession PrepareRequest urlheaders dsession PrepareRequest urlheaders
rperformEasyPerformsession "performing request"Check EasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
responsesession ReadResponse d responsesession ReadResponse d
EasyCleanup session EasyCleanup session
@ -90,15 +86,11 @@ Post←{
headers 𝕊 urldata: headers 𝕊 urldata:
sessionEasyInit sessionEasyInit
dsession PrepareRequest urlheaders dsession PrepareRequest urlheaders
rpostEasySetoptLongsession,curlOptions.post,1 "setting up POST request"Check EasySetoptLongsession,curlOptions.post,1
("Error setting up POST request: "•Fmt rpost)!rpost=0 "setting POST data"Check EasySetoptStrsession,curlOptions.postfields,data
rpostfieldsEasySetoptStrsession,curlOptions.postfields,data "setting POST data size"Check EasySetoptLongsession,curlOptions.postfieldsize,data
("Error setting POST data: "•Fmt rpostfields)!rpostfields=0
rpostfieldsizeEasySetoptLongsession,curlOptions.postfieldsize,data
("Error setting POST data size: "•Fmt rpostfieldsize)!rpostfieldsize=0
rperformEasyPerformsession "performing request"Check EasyPerformsession
("Error performing request: "•Fmt rperform)!rperform=0
responsesession ReadResponse d responsesession ReadResponse d
EasyCleanup session EasyCleanup session