structuration du header
This commit is contained in:
@@ -6,9 +6,34 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func ReadRequest(reader *bufio.Reader) ([]string, string, error) {
|
||||
var message []byte
|
||||
type HTTPHeader struct {
|
||||
Version string
|
||||
Method string
|
||||
Path string
|
||||
Lines map[string] string
|
||||
}
|
||||
|
||||
func ParseHeader(content string) (HTTPHeader, error) {
|
||||
lines := strings.Split(content, "\r\n")
|
||||
startingLine := strings.Split(lines[0], " ")
|
||||
Header := HTTPHeader{
|
||||
Method: startingLine[0],
|
||||
Path: startingLine[1],
|
||||
Version: startingLine[2],
|
||||
Lines: make(map[string]string),
|
||||
}
|
||||
for _, line := range lines[1:] {
|
||||
if line == "" {
|
||||
break
|
||||
}
|
||||
args := strings.Split(line, ": ")
|
||||
Header.Lines[args[0]] = args[1]
|
||||
}
|
||||
return Header, nil
|
||||
}
|
||||
|
||||
func ReadRequest(reader *bufio.Reader) (HTTPHeader, string, error) {
|
||||
var message []byte
|
||||
buffer := make([]byte, 8)
|
||||
|
||||
for {
|
||||
@@ -27,19 +52,11 @@ func ReadRequest(reader *bufio.Reader) ([]string, string, error) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
parts := strings.Split(string(message), "\r\n\r\n")
|
||||
|
||||
headerLines := strings.Split(parts[0], "\r\n")
|
||||
body := parts[1]
|
||||
|
||||
if len(parts) != 2 {
|
||||
return nil, "", fmt.Errorf("Wrong")
|
||||
}
|
||||
|
||||
return headerLines, body, nil
|
||||
|
||||
header, _ := ParseHeader(string(message))
|
||||
body := strings.Split(string(message), "\r\n\r\n")[1]
|
||||
return header, body, nil
|
||||
}
|
||||
|
||||
func ParseURL(path string) (string, map[string]string, error) {
|
||||
//Décomposition du chemin et des paramètres
|
||||
url := strings.Split(path, "?")
|
||||
@@ -64,3 +81,12 @@ func ParseURL(path string) (string, map[string]string, error) {
|
||||
}
|
||||
return url[0], parameters, nil
|
||||
}
|
||||
|
||||
func CheckRequestValidity(header HTTPHeader) bool {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func (router *Router) HandleClient(conn net.Conn) error {
|
||||
return err
|
||||
}
|
||||
|
||||
response := buildResponse(router.Handle(strings.Split(requestHeader[0], " ")[0], strings.Split(requestHeader[0], " ")[1]))
|
||||
response := buildResponse(router.Handle(requestHeader.Method, requestHeader.Path))
|
||||
|
||||
conn.Write([]byte(response))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user