aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/net/http/method.v
blob: 91c93e1a37ed1ebdce3d91bfa7463ac119fb2a74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.
module http

// The methods listed here are some of the most used ones, ordered by
// commonality. A comprehensive list is available at:
// https://www.iana.org/assignments/http-methods/http-methods.xhtml
pub enum Method {
	get
	post
	put
	head
	delete
	options
	trace
	connect
	patch
}

pub fn (m Method) str() string {
	return match m {
		.get { 'GET' }
		.post { 'POST' }
		.put { 'PUT' }
		.head { 'HEAD' }
		.delete { 'DELETE' }
		.options { 'OPTIONS' }
		.trace { 'TRACE' }
		.connect { 'CONNECT' }
		.patch { 'PATCH' }
	}
}

pub fn method_from_str(m string) Method {
	return match m {
		'GET' { Method.get }
		'POST' { Method.post }
		'PUT' { Method.put }
		'HEAD' { Method.head }
		'DELETE' { Method.delete }
		'OPTIONS' { Method.options }
		'TRACE' { Method.trace }
		'CONNECT' { Method.connect }
		'PATCH' { Method.patch }
		else { Method.get } // should we default to GET?
	}
}