Add req.GetHeaders and res.GetHeaders, reduce overhead.

This commit is contained in:
buffermet 2025-04-09 11:26:56 +02:00
parent 84846b11dc
commit a53d561ddd
2 changed files with 40 additions and 3 deletions

View file

@ -124,7 +124,6 @@ func (j *JSRequest) GetHeader(name, deflt string) string {
if len(header_parts) != 0 && len(header_parts[0]) == 3 { if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1]) header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2]) header_value := string(header_parts[0][2])
if strings.ToLower(name) == strings.ToLower(header_name) { if strings.ToLower(name) == strings.ToLower(header_name) {
return header_value return header_value
} }
@ -134,6 +133,25 @@ func (j *JSRequest) GetHeader(name, deflt string) string {
return deflt return deflt
} }
func (j *JSRequest) GetHeaders(name string) []string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n")
header_values := make([]string, 0, len(headers))
for i := 0; i < len(headers); i++ {
if headers[i] != "" {
header_parts := header_regexp.FindAllSubmatch([]byte(headers[i]), 1)
if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
header_values = append(header_values, header_value)
}
}
}
}
return header_values
}
func (j *JSRequest) SetHeader(name, value string) { func (j *JSRequest) SetHeader(name, value string) {
name = strings.TrimSpace(name) name = strings.TrimSpace(name)
value = strings.TrimSpace(value) value = strings.TrimSpace(value)

View file

@ -98,6 +98,7 @@ func (j *JSResponse) CheckIfModifiedAndUpdateHash() bool {
} }
func (j *JSResponse) GetHeader(name, deflt string) string { func (j *JSResponse) GetHeader(name, deflt string) string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n") headers := strings.Split(j.Headers, "\r\n")
for i := 0; i < len(headers); i++ { for i := 0; i < len(headers); i++ {
if headers[i] != "" { if headers[i] != "" {
@ -105,8 +106,7 @@ func (j *JSResponse) GetHeader(name, deflt string) string {
if len(header_parts) != 0 && len(header_parts[0]) == 3 { if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1]) header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2]) header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
if strings.ToLower(name) == strings.ToLower(header_name) {
return header_value return header_value
} }
} }
@ -115,6 +115,25 @@ func (j *JSResponse) GetHeader(name, deflt string) string {
return deflt return deflt
} }
func (j *JSResponse) GetHeaders(name string) []string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n")
header_values := make([]string, 0, len(headers))
for i := 0; i < len(headers); i++ {
if headers[i] != "" {
header_parts := header_regexp.FindAllSubmatch([]byte(headers[i]), 1)
if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
header_values = append(header_values, header_value)
}
}
}
}
return header_values
}
func (j *JSResponse) SetHeader(name, value string) { func (j *JSResponse) SetHeader(name, value string) {
name = strings.TrimSpace(name) name = strings.TrimSpace(name)
value = strings.TrimSpace(value) value = strings.TrimSpace(value)