Files
hakorune/local_tests/http_server_simple.nyash

117 lines
3.5 KiB
Plaintext
Raw Normal View History

// 🌐 HTTP Server Example - Phase 9.5 Validation
// Demonstrates Nyash HTTP server with concurrent request handling
// Simple API Handler Box
box APIHandler {
init { }
pack() {
// Empty initialization for static-like usage
}
// Home page handler
home(request) {
local html
html = "<html><body>"
html = html + "<h1>🐱 Nyash HTTP Server</h1>"
html = html + "<p>Everything is Box! Server running successfully.</p>"
html = html + "<ul>"
html = html + "<li><a href='/api/status'>Server Status</a></li>"
html = html + "<li><a href='/api/info'>Server Info</a></li>"
html = html + "<li><a href='/nonexistent'>404 Test</a></li>"
html = html + "</ul>"
html = html + "</body></html>"
return html
}
// Status API handler
status(request) {
local json
json = "{"
json = json + "\"status\": \"running\","
json = json + "\"server\": \"Nyash HTTP Server\","
json = json + "\"version\": \"1.0.0\","
json = json + "\"timestamp\": \"" + Time.now() + "\","
json = json + "\"everything_is\": \"Box\""
json = json + "}"
return json
}
// Info API handler
info(request) {
local json
json = "{"
json = json + "\"message\": \"Nyash Programming Language\","
json = json + "\"philosophy\": \"Everything is Box\","
json = json + "\"features\": ["
json = json + "\"Async/Await\","
json = json + "\"HTTP Server\","
json = json + "\"Memory Management\","
json = json + "\"AOT Compilation\""
json = json + "]"
json = json + "}"
return json
}
}
// Main HTTP Server Box
static box Main {
init { server, handler, running }
main() {
print("🌐 Starting Nyash HTTP Server...")
// Initialize components
me.server = new HTTPServerBox()
me.handler = new APIHandler()
me.running = true
// Configure server
local bindResult
bindResult = me.server.bind("127.0.0.1", 8080)
if (bindResult.toString() != "true") {
print("❌ Failed to bind to port 8080")
return false
}
local listenResult
listenResult = me.server.listen(128)
if (listenResult.toString() != "true") {
print("❌ Failed to listen on port 8080")
return false
}
// Register routes
print("📋 Registering routes...")
me.server.get("/", me.handler.home)
me.server.get("/api/status", me.handler.status)
me.server.get("/api/info", me.handler.info)
print("✅ Server configuration complete")
print("🚀 Server starting on http://127.0.0.1:8080")
print("📡 Test URLs:")
print(" http://127.0.0.1:8080/ - Home page")
print(" http://127.0.0.1:8080/api/status - Status API")
print(" http://127.0.0.1:8080/api/info - Info API")
print("")
print("Press Ctrl+C to stop the server")
print("=" * 50)
// Start server (blocking)
local result
result = me.server.start()
if (result.toString() == "true") {
print("✅ Server started successfully")
return true
} else {
print("❌ Server failed to start")
return false
}
}
}