# This file is part of NIT ( http://www.nitlanguage.org ). # # Copyright 2014 Alexis Laferrière # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Hello World Web server example # # The main page, `index.html`, is served dynamicly with `MyAction`. # The rest of the Web site fetches files from the local directory # `www/hello_world/`. module nitcorn_hello_world is example import nitcorn # An action that responds by displaying a static html content. class StaticAction super Action redef fun answer(http_request, turi) do var response = new HttpResponse(200) var title = "Hello World from Nitcorn!" response.body = """ {{{title}}}

{{{title}}}

See also a directory.

""" return response end end # An action that uses parameterized uris to customize the output. class ParamAction super Action redef fun answer(http_request, turi) do var response = new HttpResponse(200) var name = http_request.param("name") if name == null then response.body = "No name..." else response.body = "Hello {name}" end return response end end var vh = new VirtualHost("localhost:8080") # Serve index.html with our custom handler vh.routes.add new Route("/index.html", new StaticAction) vh.routes.add new Route("/hello/:name", new ParamAction) # Serve everything else with a standard `FileServer` with a root at "www/hello_world/" vh.routes.add new Route(null, new FileServer("www/hello_world/")) var factory = new HttpFactory.and_libevent factory.config.virtual_hosts.add vh factory.run