aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/pico/pico.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/examples/pico/pico.v')
-rw-r--r--v_windows/v/examples/pico/pico.v52
1 files changed, 52 insertions, 0 deletions
diff --git a/v_windows/v/examples/pico/pico.v b/v_windows/v/examples/pico/pico.v
new file mode 100644
index 0000000..8a8a636
--- /dev/null
+++ b/v_windows/v/examples/pico/pico.v
@@ -0,0 +1,52 @@
+import json
+import picoev
+import picohttpparser
+
+const (
+ port = 8088
+)
+
+struct Message {
+ message string
+}
+
+[inline]
+fn json_response() string {
+ msg := Message{
+ message: 'Hello, World!'
+ }
+ return json.encode(msg)
+}
+
+[inline]
+fn hello_response() string {
+ return 'Hello, World!'
+}
+
+fn callback(data voidptr, req picohttpparser.Request, mut res picohttpparser.Response) {
+ if picohttpparser.cmpn(req.method, 'GET ', 4) {
+ if picohttpparser.cmp(req.path, '/t') {
+ res.http_ok()
+ res.header_server()
+ res.header_date()
+ res.plain()
+ res.body(hello_response())
+ } else if picohttpparser.cmp(req.path, '/j') {
+ res.http_ok()
+ res.header_server()
+ res.header_date()
+ res.json()
+ res.body(json_response())
+ } else {
+ res.http_404()
+ }
+ } else {
+ res.http_405()
+ }
+ res.end()
+}
+
+fn main() {
+ println('Starting webserver on http://127.0.0.1:$port/ ...')
+ picoev.new(port: port, cb: &callback).serve()
+}