module http

import net
import strings

fn (req &Request) http_do(port int, method, host_name, path string) ?Response {
	bufsize := 512
	rbuffer := [512]byte
	mut sb := strings.new_builder(100)
	s := req.build_request_headers(method, host_name, path)
	
	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())
}