Added request methods
This commit is contained in:
47
http.go
Normal file
47
http.go
Normal file
@ -0,0 +1,47 @@
|
||||
package web
|
||||
|
||||
import "strings"
|
||||
|
||||
// header is used to store HTTP headers.
|
||||
type header struct {
|
||||
Key string
|
||||
Value string
|
||||
}
|
||||
|
||||
// isRequestMethod returns true if the given string is a valid HTTP request method.
|
||||
func isRequestMethod(method string) bool {
|
||||
switch method {
|
||||
case "GET", "HEAD", "POST", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE", "PATCH":
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// parseURL parses a URL and returns the scheme, host, path and query.
|
||||
func parseURL(url string) (scheme string, host string, path string, query string) {
|
||||
schemePos := strings.Index(url, "://")
|
||||
|
||||
if schemePos != -1 {
|
||||
scheme = url[:schemePos]
|
||||
url = url[schemePos+len("://"):]
|
||||
}
|
||||
|
||||
pathPos := strings.IndexByte(url, '/')
|
||||
|
||||
if pathPos != -1 {
|
||||
host = url[:pathPos]
|
||||
url = url[pathPos:]
|
||||
}
|
||||
|
||||
queryPos := strings.IndexByte(url, '?')
|
||||
|
||||
if queryPos != -1 {
|
||||
path = url[:queryPos]
|
||||
query = url[queryPos+1:]
|
||||
return
|
||||
}
|
||||
|
||||
path = url
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user