mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vweb: parse request headers
This commit is contained in:
parent
3580179602
commit
b57752e67e
@ -6,8 +6,8 @@ module http
|
|||||||
|
|
||||||
struct Request {
|
struct Request {
|
||||||
pub:
|
pub:
|
||||||
// headers []string
|
headers2 []string
|
||||||
headers map_string
|
headers map[string]string
|
||||||
method string
|
method string
|
||||||
// cookies map[string]string
|
// cookies map[string]string
|
||||||
h string
|
h string
|
||||||
|
@ -50,8 +50,18 @@ pub fn (ctx mut Context) set_cookie(key, val string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn (ctx Context) get_cookie(key string) string {
|
pub fn (ctx Context) get_cookie(key string) string {
|
||||||
cookie := ctx.req.headers['Cookie']
|
for h in ctx.req.headers2 {
|
||||||
|
if h.starts_with('Cookie:') {
|
||||||
|
cookie := h.right(7)
|
||||||
return cookie.find_between('$key=', ';')
|
return cookie.find_between('$key=', ';')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
/*
|
||||||
|
cookie := ctx.req.headers['Cookie']
|
||||||
|
println('get cookie $key : "$cookie"')
|
||||||
|
return cookie.find_between('$key=', ';')
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (ctx mut Context) set_header(key, val string) {
|
fn (ctx mut Context) set_header(key, val string) {
|
||||||
@ -61,8 +71,10 @@ fn (ctx mut Context) set_header(key, val string) {
|
|||||||
|
|
||||||
pub fn (ctx Context) html(html string) {
|
pub fn (ctx Context) html(html string) {
|
||||||
//tmpl := os.read_file(path) or {return}
|
//tmpl := os.read_file(path) or {return}
|
||||||
|
h := ctx.headers.join('\n')
|
||||||
ctx.conn.write('HTTP/1.1 200 OK
|
ctx.conn.write('HTTP/1.1 200 OK
|
||||||
Content-Type: text/html
|
Content-Type: text/html
|
||||||
|
$h
|
||||||
|
|
||||||
$html
|
$html
|
||||||
')
|
')
|
||||||
@ -79,6 +91,24 @@ pub fn run<T>(port int) {
|
|||||||
}
|
}
|
||||||
// TODO move this to handle_conn<T>(conn, app)
|
// TODO move this to handle_conn<T>(conn, app)
|
||||||
s := conn.read_line()
|
s := conn.read_line()
|
||||||
|
// Parse request headers
|
||||||
|
lines := s.split_into_lines()
|
||||||
|
mut headers := []string //map[string]string{}
|
||||||
|
for i, line in lines {
|
||||||
|
if i == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
words := line.split(':')
|
||||||
|
if words.len != 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
headers << line
|
||||||
|
/*
|
||||||
|
key := words[0]
|
||||||
|
val := words[1]
|
||||||
|
headers[key] = val
|
||||||
|
*/
|
||||||
|
}
|
||||||
// Parse the first line
|
// Parse the first line
|
||||||
// "GET / HTTP/1.1"
|
// "GET / HTTP/1.1"
|
||||||
first_line := s.all_before('\n')
|
first_line := s.all_before('\n')
|
||||||
@ -92,6 +122,7 @@ pub fn run<T>(port int) {
|
|||||||
}
|
}
|
||||||
req := http.Request{
|
req := http.Request{
|
||||||
headers: map[string]string{}
|
headers: map[string]string{}
|
||||||
|
headers2: headers
|
||||||
ws_func: 0
|
ws_func: 0
|
||||||
user_ptr: 0
|
user_ptr: 0
|
||||||
method: vals[0]
|
method: vals[0]
|
||||||
|
Loading…
Reference in New Issue
Block a user