aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/http_server.v
blob: ffcc299dbf5ac431b9a50f4a18ba761502fe5183 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module main

import net.http { CommonHeader, Request, Response, Server }

struct ExampleHandler {}

fn (h ExampleHandler) handle(req Request) Response {
	mut res := Response{
		header: http.new_header_from_map({
			CommonHeader.content_type: 'text/plain'
		})
	}
	res.text = match req.url {
		'/foo' { 'bar\n' }
		'/hello' { 'world\n' }
		'/' { 'foo\nhello\n' }
		else { 'Not found\n' }
	}
	res.status_code = if res.text == 'Not found' { 404 } else { 200 }
	return res
}

fn main() {
	mut server := Server{
		handler: ExampleHandler{}
	}
	server.listen_and_serve() ?
}