1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/http/http_client.v

23 lines
617 B
V
Raw Normal View History

2019-08-21 20:04:06 +03:00
module http
import net
import strings
2019-08-25 01:48:06 +03:00
fn (req &Request) http_do(port int, method, host_name, path string) ?Response {
2019-08-21 20:04:06 +03:00
bufsize := 512
rbuffer := [512]byte
mut sb := strings.new_builder(100)
2019-08-25 01:48:06 +03:00
s := req.build_request_headers(method, host_name, path)
2019-08-21 20:04:06 +03:00
client := net.dial( host_name, port) or { return error(err) }
client.send( s.str, s.len )
for {
readbytes := client.crecv( rbuffer, bufsize )
if readbytes < 0 { return error('http_do error reading response. readbytes: $readbytes') }
if readbytes == 0 { break }
sb.write( tos(rbuffer, readbytes) )
}
client.close()
return parse_response(sb.str())
}