Edit

kc3-lang/kc3/test/http/04_server_request.kc3

Branch :

  • test/http/04_server_request.kc3
  • quote require HTTP.Request
    require HTTP.Request
    quote require HTTP.Response
    require HTTP.Response
    quote require Socket
    require Socket
    quote require Socket.Buf
    require Socket.Buf
    quote (server = Socket.listen("127.0.0.1", "57000")) ; void
    (server = Socket.listen("127.0.0.1", "57000")) ; void
    quote (client = Socket.Buf.connect("127.0.0.1", "57000")) ; void
    (client = Socket.Buf.connect("127.0.0.1", "57000")) ; void
    quote (server_client = Socket.accept(server)) ; void
    (server_client = Socket.Buf.accept(server)) ; void
    quote Buf.write_str(client.buf_rw.w, "GET / HTTP/1.0\r\n\r\n")
    Buf.write_str(client.buf_rw.w, "GET / HTTP/1.0\r\n\r\n")
    quote req = HTTP.Request.buf_parse(server_client.buf_rw.r)
    req = HTTP.Request.buf_parse(server_client.buf_rw.r)
    quote response = %HTTP.Response{body: "Hello, KC3 HTTP test server !"}
    response = %HTTP.Response{body: "Hello, KC3 HTTP test server !"}
    quote HTTP.Response.buf_write(response, server_client.buf_rw.w, true)
    HTTP.Response.buf_write(response, server_client.buf_rw.w, true)
    quote client_req = %HTTP.Request{method: GET,
                                     url: "/",
                                     protocol: "HTTP/1.1",
                                     headers: []}
    client_req = %HTTP.Request{method: GET,
                               url: "/",
                               protocol: "HTTP/1.1",
                               headers: []}
    quote HTTP.Request.buf_write(client_req, client.buf_rw.w)
    HTTP.Request.buf_write(client_req, client.buf_rw.w)
    quote HTTP.Request.buf_parse(server_client.buf_rw.r)
    HTTP.Request.buf_parse(server_client.buf_rw.r)
    quote HTTP.Response.buf_write(response, server_client.buf_rw.w, true)
    HTTP.Response.buf_write(response, server_client.buf_rw.w, true)
    quote HTTP.Response.buf_parse(client.buf_rw.r, true)
    HTTP.Response.buf_parse(client.buf_rw.r, true)
    quote Socket.Buf.close(client)
    Socket.Buf.close(client)
    quote Socket.Buf.close(server_client)
    Socket.Buf.close(server_client)
    quote Socket.close(server)
    Socket.close(server)