mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
http: replace method string with an enum
This commit is contained in:
parent
65159b8070
commit
fec9920b1a
@ -10,7 +10,7 @@ const (
|
|||||||
is_used = openssl.is_used
|
is_used = openssl.is_used
|
||||||
)
|
)
|
||||||
|
|
||||||
fn (req &Request) ssl_do(port int, method, host_name, path string) ?Response {
|
fn (req &Request) ssl_do(port int, method Method, host_name, path string) ?Response {
|
||||||
// ssl_method := C.SSLv23_method()
|
// ssl_method := C.SSLv23_method()
|
||||||
ssl_method := C.TLSv1_2_method()
|
ssl_method := C.TLSv1_2_method()
|
||||||
ctx := C.SSL_CTX_new(ssl_method)
|
ctx := C.SSL_CTX_new(ssl_method)
|
||||||
|
@ -14,9 +14,22 @@ const (
|
|||||||
bufsize = 1536
|
bufsize = 1536
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pub enum Method {
|
||||||
|
get
|
||||||
|
post
|
||||||
|
put
|
||||||
|
header
|
||||||
|
delete
|
||||||
|
options
|
||||||
|
head
|
||||||
|
trace
|
||||||
|
connect
|
||||||
|
patch
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
pub mut:
|
pub mut:
|
||||||
method string
|
method Method
|
||||||
headers map[string]string
|
headers map[string]string
|
||||||
cookies map[string]string
|
cookies map[string]string
|
||||||
data string
|
data string
|
||||||
@ -29,7 +42,7 @@ pub mut:
|
|||||||
|
|
||||||
pub struct FetchConfig {
|
pub struct FetchConfig {
|
||||||
pub mut:
|
pub mut:
|
||||||
method string
|
method Method
|
||||||
data string
|
data string
|
||||||
params map[string]string
|
params map[string]string
|
||||||
headers map[string]string
|
headers map[string]string
|
||||||
@ -47,11 +60,11 @@ pub:
|
|||||||
status_code int
|
status_code int
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_request(method, url_, data string) ?Request {
|
pub fn new_request(method Method, url_, data string) ?Request {
|
||||||
url := if method == 'GET' { url_ + '?' + data } else { url_ }
|
url := if method == .get { url_ + '?' + data } else { url_ }
|
||||||
//println('new req() method=$method url="$url" dta="$data"')
|
//println('new req() method=$method url="$url" dta="$data"')
|
||||||
return Request{
|
return Request{
|
||||||
method: method.to_upper()
|
method: method
|
||||||
url: url
|
url: url
|
||||||
data: data
|
data: data
|
||||||
/*
|
/*
|
||||||
@ -63,11 +76,11 @@ pub fn new_request(method, url_, data string) ?Request {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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{})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn post(url, data string) ?Response {
|
pub fn post(url, data string) ?Response {
|
||||||
return fetch_with_method('POST', url, {
|
return fetch_with_method(.post, url, {
|
||||||
data: data
|
data: data
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': content_type_default
|
'Content-Type': content_type_default
|
||||||
@ -76,7 +89,7 @@ pub fn post(url, data string) ?Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn post_json(url, data string) ?Response {
|
pub fn post_json(url, data string) ?Response {
|
||||||
return fetch_with_method('POST', url, {
|
return fetch_with_method(.post, url, {
|
||||||
data: data
|
data: data
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
@ -85,7 +98,7 @@ pub fn post_json(url, data string) ?Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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: {
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
}
|
}
|
||||||
@ -94,7 +107,7 @@ pub fn post_form(url string, data map[string]string) ?Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn put(url, data string) ?Response {
|
pub fn put(url, data string) ?Response {
|
||||||
return fetch_with_method('PUT', url, {
|
return fetch_with_method(.put, url, {
|
||||||
data: data
|
data: data
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': content_type_default
|
'Content-Type': content_type_default
|
||||||
@ -103,7 +116,7 @@ pub fn put(url, data string) ?Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn patch(url, data string) ?Response {
|
pub fn patch(url, data string) ?Response {
|
||||||
return fetch_with_method('PATCH', url, {
|
return fetch_with_method(.patch, url, {
|
||||||
data: data
|
data: data
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': content_type_default
|
'Content-Type': content_type_default
|
||||||
@ -112,11 +125,11 @@ pub fn patch(url, data string) ?Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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{})
|
||||||
}
|
}
|
||||||
|
|
||||||
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{})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fetch(_url string, config FetchConfig) ?Response {
|
pub fn fetch(_url string, config FetchConfig) ?Response {
|
||||||
@ -127,9 +140,8 @@ pub fn fetch(_url string, config FetchConfig) ?Response {
|
|||||||
return error('http.fetch: invalid url ${_url}')
|
return error('http.fetch: invalid url ${_url}')
|
||||||
}
|
}
|
||||||
data := config.data
|
data := config.data
|
||||||
method := config.method.to_upper()
|
|
||||||
req := Request{
|
req := Request{
|
||||||
method: method
|
method: config.method
|
||||||
url: url
|
url: url
|
||||||
data: data
|
data: data
|
||||||
headers: config.headers
|
headers: config.headers
|
||||||
@ -147,7 +159,7 @@ pub fn fetch(_url string, config FetchConfig) ?Response {
|
|||||||
|
|
||||||
pub fn get_text(url string) string {
|
pub fn get_text(url string) string {
|
||||||
resp := fetch(url, {
|
resp := fetch(url, {
|
||||||
method: 'GET'
|
method: .get
|
||||||
}) or {
|
}) or {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
@ -164,7 +176,7 @@ pub fn url_encode_form_data(data map[string]string) string {
|
|||||||
return pieces.join('&')
|
return pieces.join('&')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fetch_with_method(method, url string, _config FetchConfig) ?Response {
|
fn fetch_with_method(method Method, url string, _config FetchConfig) ?Response {
|
||||||
mut config := _config
|
mut config := _config
|
||||||
config.method = method
|
config.method = method
|
||||||
return fetch(url, config)
|
return fetch(url, config)
|
||||||
@ -258,7 +270,7 @@ pub fn (req &Request) do() ?Response {
|
|||||||
return resp
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (req &Request) method_and_url_to_response(method string, url urllib.URL) ?Response {
|
fn (req &Request) method_and_url_to_response(method Method, url urllib.URL) ?Response {
|
||||||
host_name := url.hostname()
|
host_name := url.hostname()
|
||||||
scheme := url.scheme
|
scheme := url.scheme
|
||||||
p := url.path.trim_left('/')
|
p := url.path.trim_left('/')
|
||||||
@ -348,7 +360,7 @@ fn parse_response(resp string) Response {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (req &Request) build_request_headers(method, host_name, path string) string {
|
fn (req &Request) build_request_headers(method Method, host_name, path string) string {
|
||||||
ua := req.user_agent
|
ua := req.user_agent
|
||||||
mut uheaders := []string{}
|
mut uheaders := []string{}
|
||||||
if 'Host' !in req.headers {
|
if 'Host' !in req.headers {
|
||||||
@ -371,6 +383,17 @@ fn (req &Request) build_request_headers(method, host_name, path string) string {
|
|||||||
req.data
|
req.data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (m Method) str() string {
|
||||||
|
return match m {
|
||||||
|
.get { 'GET' }
|
||||||
|
.post { 'POST' }
|
||||||
|
.header { 'HEADER' }
|
||||||
|
.put { 'PUT' }
|
||||||
|
.connect { 'CONNECT' }
|
||||||
|
else { '' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn (req &Request) build_request_cookies_header() string {
|
fn (req &Request) build_request_cookies_header() string {
|
||||||
if req.cookies.keys().len < 1 {
|
if req.cookies.keys().len < 1 {
|
||||||
return ''
|
return ''
|
||||||
@ -401,7 +424,7 @@ pub fn escape(s string) string {
|
|||||||
panic('http.escape() was replaced with http.escape_url()')
|
panic('http.escape() was replaced with http.escape_url()')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (req &Request) http_do(port int, method, host_name, path string) ?Response {
|
fn (req &Request) http_do(port int, method Method, host_name, path string) ?Response {
|
||||||
rbuffer := [bufsize]byte
|
rbuffer := [bufsize]byte
|
||||||
mut sb := strings.new_builder(100)
|
mut sb := strings.new_builder(100)
|
||||||
s := req.build_request_headers(method, host_name, path)
|
s := req.build_request_headers(method, host_name, path)
|
||||||
|
Loading…
Reference in New Issue
Block a user