v/vlib/http/http_client.v

31 lines
649 B
V
Raw Normal View History

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