Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,39 @@
|
||||
append(event: dever.io.ReadEvent.Chunk(bytes), state: Bytes) (value: Bytes) { value = dever.bytes.concat(state, bytes) }
|
||||
append(event: dever.io.ReadEvent.Failed(message), state: Bytes) (value: Bytes) { fail(dever.io.ReadEvent.Failed(message)) }
|
||||
|
||||
load(path: Text) (value: Bytes) {
|
||||
file = dever.io.open(path)
|
||||
value = reduce(append, dever.io.chunks(file, 4096), dever.bytes.fromText(""))
|
||||
dever.io.close(file)
|
||||
}
|
||||
|
||||
limits() (value: dever.http.Limits) {
|
||||
value = dever.http.defaultLimits()
|
||||
value.http2 = dever.http.defaultHttp2Limits()
|
||||
}
|
||||
|
||||
route(request: dever.http.Request) (response: dever.http.Response) {
|
||||
response = dever.http.Response { status = 200, headers = [], body = request.body }
|
||||
}
|
||||
|
||||
serve(listener: dever.system.Listener, tls: dever.system.ServerTls) () {
|
||||
dever.http.serveTls(route, listener, limits(), tls)
|
||||
}
|
||||
|
||||
verify() (answer: Bool) {
|
||||
certificate = blocking(load("server.pem"))
|
||||
key = blocking(load("server-key.pem"))
|
||||
root = blocking(load("root.pem"))
|
||||
tls = dever.tls.server(certificate, key)
|
||||
listener = dever.net.listen("127.0.0.1", 0)
|
||||
server = run(serve(listener, tls))
|
||||
origin = "https://localhost:" + int.toText(dever.net.port(listener))
|
||||
client = dever.http.client(origin, dever.tls.client(root), limits(), dever.http.defaultPoolLimits())
|
||||
request = dever.http.Request { method = "POST", target = "/echo", headers = [], body = dever.bytes.fromText("雪") }
|
||||
first = dever.http.request(client, request)
|
||||
second = dever.http.request(client, request)
|
||||
dever.http.closeClient(client)
|
||||
dever.net.closeListener(listener)
|
||||
wait(server)
|
||||
answer = first.status == 200 and first.body == request.body and second.body == request.body
|
||||
}
|
||||
Reference in new issue
Block a user