net: document pub structs & functions in http/http.v (#9016)

pull/9036/head
makino 2021-03-01 18:48:38 +09:00 committed by GitHub
parent ee879f3e41
commit 8045395cbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 0 deletions

View File

@ -14,6 +14,7 @@ const (
bufsize = 1536 bufsize = 1536
) )
// Request holds information about an HTTP request
pub struct Request { pub struct Request {
pub mut: pub mut:
version Version = .v1_1 version Version = .v1_1
@ -29,6 +30,7 @@ pub mut:
ws_func voidptr ws_func voidptr
} }
// FetchConfig holds configurations of fetch
pub struct FetchConfig { pub struct FetchConfig {
pub mut: pub mut:
method Method method Method
@ -40,6 +42,7 @@ pub mut:
verbose bool verbose bool
} }
// Response represents the result of the request
pub struct Response { pub struct Response {
pub: pub:
text string text string
@ -64,10 +67,12 @@ pub fn new_request(method Method, url_ string, data string) ?Request {
} }
} }
// get sends a GET HTTP request to the URL
pub fn get(url string) ?Response { pub fn get(url string) ?Response {
return fetch_with_method(.get, url, FetchConfig{}) return fetch_with_method(.get, url, FetchConfig{})
} }
// post sends a POST HTTP request to the URL with a string data
pub fn post(url string, data string) ?Response { pub fn post(url string, data string) ?Response {
return fetch_with_method(.post, url, return fetch_with_method(.post, url,
data: data data: data
@ -77,6 +82,7 @@ pub fn post(url string, data string) ?Response {
) )
} }
// post_json sends a POST HTTP request to the URL with a JSON data
pub fn post_json(url string, data string) ?Response { pub fn post_json(url string, data string) ?Response {
return fetch_with_method(.post, url, return fetch_with_method(.post, url,
data: data data: data
@ -86,6 +92,7 @@ pub fn post_json(url string, data string) ?Response {
) )
} }
// post_form sends a POST HTTP request to the URL with X-WWW-FORM-URLENCODED data
pub fn post_form(url string, data map[string]string) ?Response { pub fn post_form(url string, data map[string]string) ?Response {
return fetch_with_method(.post, url, return fetch_with_method(.post, url,
headers: { headers: {
@ -95,6 +102,7 @@ pub fn post_form(url string, data map[string]string) ?Response {
) )
} }
// put sends a PUT HTTP request to the URL with a string data
pub fn put(url string, data string) ?Response { pub fn put(url string, data string) ?Response {
return fetch_with_method(.put, url, return fetch_with_method(.put, url,
data: data data: data
@ -104,6 +112,7 @@ pub fn put(url string, data string) ?Response {
) )
} }
// patch sends a PATCH HTTP request to the URL with a string data
pub fn patch(url string, data string) ?Response { pub fn patch(url string, data string) ?Response {
return fetch_with_method(.patch, url, return fetch_with_method(.patch, url,
data: data data: data
@ -113,14 +122,17 @@ pub fn patch(url string, data string) ?Response {
) )
} }
// head sends a HEAD HTTP request to the URL
pub fn head(url string) ?Response { pub fn head(url string) ?Response {
return fetch_with_method(.head, url, FetchConfig{}) return fetch_with_method(.head, url, FetchConfig{})
} }
// delete sends a DELETE HTTP request to the URL
pub fn delete(url string) ?Response { pub fn delete(url string) ?Response {
return fetch_with_method(.delete, url, FetchConfig{}) return fetch_with_method(.delete, url, FetchConfig{})
} }
// fetch sends an HTTP request to the URL with the given method and configurations
pub fn fetch(_url string, config FetchConfig) ?Response { pub fn fetch(_url string, config FetchConfig) ?Response {
if _url == '' { if _url == '' {
return error('http.fetch: empty url') return error('http.fetch: empty url')
@ -142,11 +154,13 @@ pub fn fetch(_url string, config FetchConfig) ?Response {
return res return res
} }
// get_text sends a GET HTTP request to the URL and returns the text content of the response
pub fn get_text(url string) string { pub fn get_text(url string) string {
resp := fetch(url, method: .get) or { return '' } resp := fetch(url, method: .get) or { return '' }
return resp.text return resp.text
} }
// url_encode_form_data converts mapped data to an URL encoded string
pub fn url_encode_form_data(data map[string]string) string { pub fn url_encode_form_data(data map[string]string) string {
mut pieces := []string{} mut pieces := []string{}
for key_, value_ in data { for key_, value_ in data {
@ -193,6 +207,7 @@ pub fn (mut req Request) add_header(key string, val string) {
req.headers[key] = val req.headers[key] = val
} }
// parse_headers parses HTTP header strings to mapped data
pub fn parse_headers(lines []string) map[string]string { pub fn parse_headers(lines []string) map[string]string {
mut headers := map[string]string{} mut headers := map[string]string{}
for i, line in lines { for i, line in lines {
@ -360,18 +375,22 @@ fn (req &Request) build_request_cookies_header() string {
return 'Cookie: ' + cookie.join('; ') + '\r\n' return 'Cookie: ' + cookie.join('; ') + '\r\n'
} }
// unescape_url is deprecated, use urllib.query_unescape() instead
pub fn unescape_url(s string) string { pub fn unescape_url(s string) string {
panic('http.unescape_url() was replaced with urllib.query_unescape()') panic('http.unescape_url() was replaced with urllib.query_unescape()')
} }
// escape_url is deprecated, use urllib.query_escape() instead
pub fn escape_url(s string) string { pub fn escape_url(s string) string {
panic('http.escape_url() was replaced with urllib.query_escape()') panic('http.escape_url() was replaced with urllib.query_escape()')
} }
// unescape is deprecated, use urllib.query_escape() instead
pub fn unescape(s string) string { pub fn unescape(s string) string {
panic('http.unescape() was replaced with http.unescape_url()') panic('http.unescape() was replaced with http.unescape_url()')
} }
// escape is deprecated, use urllib.query_unescape() instead
pub fn escape(s string) string { pub fn escape(s string) string {
panic('http.escape() was replaced with http.escape_url()') panic('http.escape() was replaced with http.escape_url()')
} }
@ -387,6 +406,7 @@ fn (req &Request) http_do(host string, method Method, path string) ?Response {
return parse_response(bytes.bytestr()) return parse_response(bytes.bytestr())
} }
// referer returns 'Referer' header value of the given request
pub fn (req &Request) referer() string { pub fn (req &Request) referer() string {
return req.headers['Referer'] return req.headers['Referer']
} }