Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,56 @@
|
||||
// vtest build: !solaris
|
||||
import json
|
||||
import picoev
|
||||
import picohttpparser
|
||||
|
||||
const port = 8089
|
||||
|
||||
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 req.method == 'GET' {
|
||||
if req.path == '/t' {
|
||||
res.http_ok()
|
||||
res.header_server()
|
||||
res.header_date()
|
||||
res.plain()
|
||||
res.body(hello_response())
|
||||
} else if req.path == '/j' {
|
||||
res.http_ok()
|
||||
res.header_server()
|
||||
res.header_date()
|
||||
res.json()
|
||||
res.body(json_response())
|
||||
} else {
|
||||
res.http_ok()
|
||||
res.header_server()
|
||||
res.header_date()
|
||||
res.html()
|
||||
res.body('Hello Picoev!\n')
|
||||
}
|
||||
} else {
|
||||
res.http_405()
|
||||
}
|
||||
res.end()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println('Starting webserver on http://localhost:${port}/ ...')
|
||||
mut server := picoev.new(port: port, cb: callback)!
|
||||
server.serve()
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
// vtest build: !solaris
|
||||
module main
|
||||
|
||||
import net
|
||||
import picoev
|
||||
|
||||
const port = 8080
|
||||
|
||||
const http_response = 'HTTP/1.1 200 OK\r\nContent-type: text/html\r\nContent-length: 18\r\n\r\nHello from Picoev!'
|
||||
|
||||
fn main() {
|
||||
println('Starting webserver on http://localhost:${port}/ ...')
|
||||
mut pico := picoev.new(
|
||||
port: port
|
||||
raw_cb: handle_conn
|
||||
)!
|
||||
pico.serve()
|
||||
}
|
||||
|
||||
fn handle_conn(mut pv picoev.Picoev, fd int, _events int) {
|
||||
// setup a nonblocking tcp connection
|
||||
mut conn := &net.TcpConn{
|
||||
sock: net.tcp_socket_from_handle_raw(fd)
|
||||
handle: fd
|
||||
is_blocking: false
|
||||
}
|
||||
|
||||
mut buf := []u8{len: 4096}
|
||||
// read data from the tcp connection
|
||||
conn.read(mut buf) or { eprintln('could not read data from socket') }
|
||||
|
||||
println('received data:')
|
||||
println(buf.bytestr())
|
||||
|
||||
conn.write(http_response.bytes()) or { eprintln('could not write response') }
|
||||
|
||||
// remove the socket from picoev's event loop and close the connection
|
||||
pv.close_conn(fd)
|
||||
}
|
||||
Reference in new issue
Block a user