...
1 package playwright
2
3 import (
4 "strings"
5 )
6
7 type NameValue struct {
8 Name string
9 Value string
10 }
11 type HeadersArray []NameValue
12 type rawHeaders struct {
13 headersArray HeadersArray
14 headersMap map[string][]string
15 }
16
17 func (r *rawHeaders) Get(name string) string {
18 values := r.GetAll(name)
19 if len(values) == 0 {
20 return ""
21 }
22 sep := ", "
23 if strings.ToLower(name) == "set-cookie" {
24 sep = "\n"
25 }
26 return strings.Join(values, sep)
27 }
28 func (r *rawHeaders) GetAll(name string) []string {
29 name = strings.ToLower(name)
30 if _, ok := r.headersMap[name]; !ok {
31 return []string{}
32 }
33 return r.headersMap[name]
34 }
35 func (r *rawHeaders) Headers() map[string]string {
36 out := make(map[string]string)
37 for key := range r.headersMap {
38 out[key] = r.Get(key)
39 }
40 return out
41 }
42
43 func (r *rawHeaders) HeadersArray() HeadersArray {
44 return r.headersArray
45 }
46 func newRawHeaders(headers interface{}) *rawHeaders {
47 r := &rawHeaders{}
48 r.headersArray = make([]NameValue, 0)
49 r.headersMap = make(map[string][]string)
50 for _, header := range headers.([]interface{}) {
51 entry := header.(map[string]interface{})
52 name := entry["name"].(string)
53 value := entry["value"].(string)
54 r.headersArray = append(r.headersArray, NameValue{
55 Name: name,
56 Value: value,
57 })
58 if _, ok := r.headersMap[strings.ToLower(name)]; !ok {
59 r.headersMap[strings.ToLower(name)] = make([]string, 0)
60 }
61 r.headersMap[strings.ToLower(name)] = append(r.headersMap[strings.ToLower(name)], value)
62 }
63 return r
64 }
65
View as plain text