|
// retoor <retoor@molodetz.nl>
|
|
import "net" for Socket
|
|
import "scheduler" for Scheduler
|
|
|
|
class HttpClient {
|
|
static get(host, port, path) {
|
|
System.print("Connecting to %(host):%(port)...")
|
|
var socket = Socket.connect(host, port)
|
|
|
|
var request = "GET %(path) HTTP/1.1\r\n" +
|
|
"Host: %(host)\r\n" +
|
|
"User-Agent: Wren-CLI\r\n" +
|
|
"Connection: close\r\n" +
|
|
"\r\n"
|
|
|
|
System.print("Sending request...")
|
|
socket.write(request)
|
|
|
|
System.print("Waiting for response...")
|
|
var response = ""
|
|
while (true) {
|
|
var chunk = socket.read()
|
|
if (chunk == null) break
|
|
response = response + chunk
|
|
}
|
|
|
|
socket.close()
|
|
return response
|
|
}
|
|
}
|
|
|
|
// Example usage: Fetching from a local server or a known public IP
|
|
// Note: This implementation is for raw IP/DNS if supported by uv_tcp_connect.
|
|
// Since our net.c uses uv_ip4_addr, we use localhost for the example.
|
|
var host = "127.0.0.1"
|
|
var port = 8080 // Try to connect to our own http_server example
|
|
var path = "/"
|
|
|
|
while(true) {
|
|
var result = HttpClient.get(host, port, path)
|
|
System.print("\n--- Response Received ---
|
|
")
|
|
System.print(result)
|
|
}
|