summaryrefslogtreecommitdiff
path: root/vendor/github.com/playwright-community/playwright-go/network.go
blob: 6f76fa5a7f1cacc74c9d613aaf5ca3fb68842860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package playwright

import (
	"strings"
)

type rawHeaders struct {
	headersArray []NameValue
	headersMap   map[string][]string
}

func (r *rawHeaders) Get(name string) string {
	values := r.GetAll(name)
	if len(values) == 0 {
		return ""
	}
	sep := ", "
	if strings.ToLower(name) == "set-cookie" {
		sep = "\n"
	}
	return strings.Join(values, sep)
}

func (r *rawHeaders) GetAll(name string) []string {
	name = strings.ToLower(name)
	if _, ok := r.headersMap[name]; !ok {
		return []string{}
	}
	return r.headersMap[name]
}

func (r *rawHeaders) Headers() map[string]string {
	out := make(map[string]string)
	for key := range r.headersMap {
		out[key] = r.Get(key)
	}
	return out
}

func (r *rawHeaders) HeadersArray() []NameValue {
	return r.headersArray
}

func newRawHeaders(headers interface{}) *rawHeaders {
	r := &rawHeaders{}
	r.headersArray = make([]NameValue, 0)
	r.headersMap = make(map[string][]string)
	for _, header := range headers.([]interface{}) {
		entry := header.(map[string]interface{})
		name := entry["name"].(string)
		value := entry["value"].(string)
		r.headersArray = append(r.headersArray, NameValue{
			Name:  name,
			Value: value,
		})
		if _, ok := r.headersMap[strings.ToLower(name)]; !ok {
			r.headersMap[strings.ToLower(name)] = make([]string, 0)
		}
		r.headersMap[strings.ToLower(name)] = append(r.headersMap[strings.ToLower(name)], value)
	}
	return r
}