mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vweb: add file
method to vweb.Context, make the existing json
method generic (#12211)
This commit is contained in:
parent
e9aa18fcc8
commit
108644d260
@ -9,6 +9,7 @@ import net
|
|||||||
import net.http
|
import net.http
|
||||||
import net.urllib
|
import net.urllib
|
||||||
import time
|
import time
|
||||||
|
import json
|
||||||
|
|
||||||
// A type which don't get filtered inside templates
|
// A type which don't get filtered inside templates
|
||||||
pub type RawHtml = string
|
pub type RawHtml = string
|
||||||
@ -236,9 +237,28 @@ pub fn (mut ctx Context) text(s string) Result {
|
|||||||
return Result{}
|
return Result{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Response HTTP_OK with s as payload with content-type `application/json`
|
// Response HTTP_OK with json_s as payload with content-type `application/json`
|
||||||
pub fn (mut ctx Context) json(s string) Result {
|
pub fn (mut ctx Context) json<T>(j T) Result {
|
||||||
ctx.send_response_to_client('application/json', s)
|
json_s := json.encode(j)
|
||||||
|
ctx.send_response_to_client('application/json', json_s)
|
||||||
|
return Result{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Response HTTP_OK with file as payload
|
||||||
|
pub fn (mut ctx Context) file(f_path string) Result {
|
||||||
|
ext := os.file_ext(f_path)
|
||||||
|
data := os.read_file(f_path) or {
|
||||||
|
eprint(err.msg)
|
||||||
|
ctx.server_error(500)
|
||||||
|
return Result{}
|
||||||
|
}
|
||||||
|
content_type := vweb.mime_types[ext]
|
||||||
|
if content_type == '' {
|
||||||
|
eprintln('no MIME type found for extension $ext')
|
||||||
|
ctx.server_error(500)
|
||||||
|
} else {
|
||||||
|
ctx.send_response_to_client(content_type, data)
|
||||||
|
}
|
||||||
return Result{}
|
return Result{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user