import net.http as http; import logging as logging; import json as json; type ExampleResponse struct { pub id: i32; pub name: str; pub email: str; } type Router struct { logger: logging::Logger; pub fn new(logger: logging::Logger): Router { return Self{logger: logger}; } pub fn get_user_data(self: Self, req: http.Request): IO[Result[http::Response, http::Error]] { let response_data = ExampleResponse{ id: 4, name: "Andrew", email: "andrew@boringlang.com", }; self.logger.info("getting user data")?; return ok(http::Response::ok(json::dumps(response_data)?)); } } pub fn main(args: List[String], os: OS): IO[i32] { let logger = logging::ConsoleLogger::new(os.console.stdout()); let router = Router::new(logger); let app = http::Router::new("").add_route("/myroute", router.get_user_data); let http_server = http::Server::new(os.net(), "localhost", 8080, app); let err = http_server.serve_forever()?; logger.info("error serving: ", err)?; return 1; }