1
0
mirror of https://github.com/MontFerret/ferret.git synced 2025-07-05 00:49:00 +02:00

Bugfix/#597 headers panic (#598)

* Remodeled HTTPHeaders

* Remodeled HTTPCookies
This commit is contained in:
Tim Voronov
2021-03-26 12:01:00 -04:00
committed by GitHub
parent b3adea3622
commit d55bce325c
34 changed files with 724 additions and 345 deletions

View File

@ -168,7 +168,7 @@ func newPageLoadParams(url values.String, arg core.Value) (PageLoadParams, error
res.Cookies = cookies
default:
res.Cookies = make(drivers.HTTPCookies)
res.Cookies = drivers.NewHTTPCookies()
}
}
@ -220,9 +220,13 @@ func newPageLoadParams(url values.String, arg core.Value) (PageLoadParams, error
return res, nil
}
func parseCookieObject(obj *values.Object) (drivers.HTTPCookies, error) {
func parseCookieObject(obj *values.Object) (*drivers.HTTPCookies, error) {
if obj == nil {
return nil, errors.Wrap(core.ErrMissedArgument, "cookies")
}
var err error
res := make(drivers.HTTPCookies)
res := drivers.NewHTTPCookies()
obj.ForEach(func(value core.Value, _ string) bool {
cookie, e := parseCookie(value)
@ -233,7 +237,7 @@ func parseCookieObject(obj *values.Object) (drivers.HTTPCookies, error) {
return false
}
res[cookie.Name] = cookie
res.Set(cookie)
return true
})
@ -241,9 +245,13 @@ func parseCookieObject(obj *values.Object) (drivers.HTTPCookies, error) {
return res, err
}
func parseCookieArray(arr *values.Array) (drivers.HTTPCookies, error) {
func parseCookieArray(arr *values.Array) (*drivers.HTTPCookies, error) {
if arr == nil {
return nil, errors.Wrap(core.ErrMissedArgument, "cookies")
}
var err error
res := make(drivers.HTTPCookies)
res := drivers.NewHTTPCookies()
arr.ForEach(func(value core.Value, _ int) bool {
cookie, e := parseCookie(value)
@ -254,7 +262,7 @@ func parseCookieArray(arr *values.Array) (drivers.HTTPCookies, error) {
return false
}
res[cookie.Name] = cookie
res.Set(cookie)
return true
})
@ -350,11 +358,25 @@ func parseCookie(value core.Value) (drivers.HTTPCookie, error) {
return cookie, err
}
func parseHeader(headers *values.Object) drivers.HTTPHeaders {
res := make(drivers.HTTPHeaders)
func parseHeader(headers *values.Object) *drivers.HTTPHeaders {
res := drivers.NewHTTPHeaders()
headers.ForEach(func(value core.Value, key string) bool {
res.Set(key, value.String())
if value.Type() == types.Array {
value := value.(*values.Array)
keyValues := make([]string, 0, value.Length())
value.ForEach(func(v core.Value, idx int) bool {
keyValues = append(keyValues, v.String())
return true
})
res.SetArr(key, keyValues)
} else {
res.Set(key, value.String())
}
return true
})