[http.upgrade.request.private] clean 'parseHeader()' with using [internal.http.request.parser.header]

This commit is contained in:
xdrm-brackets 2018-04-25 15:01:12 +02:00
parent e375de0f33
commit 8cda08731f
1 changed files with 30 additions and 15 deletions

View File

@ -2,7 +2,7 @@ package request
import ( import (
"fmt" "fmt"
"strings" "git.xdrm.io/gws/internal/http/request/parser/header"
) )
@ -28,24 +28,39 @@ func (r *T) parseHeader(b []byte) {
/* (2) Other lines -> Header-Name: Header-Value /* (2) Other lines -> Header-Name: Header-Value
---------------------------------------------------------*/ ---------------------------------------------------------*/
/* (1) Split by ': ' */ /* (1) Try to parse header */
parts := strings.Split(string(b), ": ") head, err := header.Parse(b)
if err != nil {
/* (2) Abort on failure */ r.Err = fmt.Errorf("Error parsing header: %s", err)
if len(parts) != 2 {
return return
} }
/* (3) Match header */ /* (2) Manage header */
switch strings.ToLower(parts[0]) { switch head.Name {
case "host": fmt.Printf("[host] '%s'\n", parts[1]) case header.HOST: fmt.Printf("[host] "); printValues(head.Values)
case "upgrade": fmt.Printf("[upgrade] '%s'\n", parts[1]) case header.UPGRADE: fmt.Printf("[upgrade] "); printValues(head.Values)
case "connection": fmt.Printf("[connection] '%s'\n", parts[1]) case header.CONNECTION: fmt.Printf("[connection] "); printValues(head.Values)
case "sec-websocket-key": fmt.Printf("[sec-websocket-key] '%s'\n", parts[1]) case header.WSKEY: fmt.Printf("[sec-websocket-key] "); printValues(head.Values)
case "origin": fmt.Printf("[origin] '%s'\n", parts[1]) case header.ORIGIN: fmt.Printf("[origin] "); printValues(head.Values)
case "sec-websocket-protocol": fmt.Printf("[sec-websocket-protocol] '%s'\n", parts[1]) case header.WSPROTOCOL: fmt.Printf("[sec-websocket-protocol] "); printValues(head.Values)
case "sec-websocket-version": fmt.Printf("[sec-websocket-version] '%s'\n", parts[1]) case header.WSVERSION: fmt.Printf("[sec-websocket-version] "); printValues(head.Values)
}
}
func printValues(bb [][]byte){
for i, b := range bb {
if i == 0 {
fmt.Printf("[ '%s'", b)
} else {
fmt.Printf(", '%s'", b)
}
} }
fmt.Printf(" ]\n");
} }