Add POST requests

This commit is contained in:
Dimitri Lozeve 2023-10-01 17:46:14 +02:00
parent 9bb42177d8
commit 8c88497fdf
3 changed files with 69 additions and 7 deletions

View file

@ -1,4 +1,4 @@
Get⟩⇐
Get,Post⟩⇐
easyInit,
@ -72,3 +72,64 @@ headers 𝕊 url:
contentcontent,
}
}
Post{
𝕊 urldata: 𝕊 urldata ;
headers 𝕊 urldata:
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
rpostEasySetoptLongsession,options.post,1
("Error setting up POST request: "•Fmt rpost)!rpost=0
rpostfieldsEasySetoptStrsession,options.postfields,data
("Error setting POST data: "•Fmt rpostfields)!rpostfields=0
rpostfieldsizeEasySetoptLongsession,options.postfieldsize,data
("Error setting POST data size: "•Fmt rpostfieldsize)!rpostfieldsize=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,
}
}

View file

@ -59,6 +59,7 @@ options←{
httpget80
# long integer options
postfieldsize60 # size of the POST input data
timeout78 # timeout in seconds
timeoutms155 # timeout in milliseconds
@ -68,11 +69,12 @@ options←{
useragentstrOffset+18
# pointer options
writedataptrOffset+1
headerdataptrOffset+29
writedataptrOffset+1 # FILE* in which to write response content
postfieldsptrOffset+15 # pointer to POST input data
headerdataptrOffset+29 # FILE* in which to write response headers
# linked list options
httpHeaderslistOffset+23
httpHeaderslistOffset+23 # HTTP headers as a list of strings
}

View file

@ -1,7 +1,6 @@
Get⟩←•Import"curl.bqn"
Get,Post⟩←•Import"curl.bqn"
r"Hello: World","Blabla: Blublu"Get"http://httpbin.org/get?key=value"
r"Content-Type: application/json"Post"http://localhost:8080/post""{""key"": ""value""}"
r.code
r.headers
r.content
r.time