mirror of
https://github.com/MontFerret/ferret.git
synced 2025-01-24 03:49:29 +02:00
2baac62d1e
Added jettison for json encoding
86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
package network
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/mafredri/cdp/protocol/network"
|
|
|
|
"github.com/MontFerret/ferret/pkg/drivers"
|
|
)
|
|
|
|
var emptyExpires = time.Time{}
|
|
|
|
func fromDriverCookie(url string, cookie drivers.HTTPCookie) network.CookieParam {
|
|
sameSite := network.CookieSameSiteNotSet
|
|
|
|
switch cookie.SameSite {
|
|
case drivers.SameSiteLaxMode:
|
|
sameSite = network.CookieSameSiteLax
|
|
case drivers.SameSiteStrictMode:
|
|
sameSite = network.CookieSameSiteStrict
|
|
}
|
|
|
|
if cookie.Expires == emptyExpires {
|
|
cookie.Expires = time.Now().Add(time.Duration(24) + time.Hour)
|
|
}
|
|
|
|
normalizedURL := normalizeCookieURL(url)
|
|
|
|
return network.CookieParam{
|
|
URL: &normalizedURL,
|
|
Name: cookie.Name,
|
|
Value: cookie.Value,
|
|
Secure: &cookie.Secure,
|
|
Path: &cookie.Path,
|
|
Domain: &cookie.Domain,
|
|
HTTPOnly: &cookie.HTTPOnly,
|
|
SameSite: sameSite,
|
|
Expires: network.TimeSinceEpoch(cookie.Expires.Unix()),
|
|
}
|
|
}
|
|
|
|
func fromDriverCookieDelete(url string, cookie drivers.HTTPCookie) *network.DeleteCookiesArgs {
|
|
normalizedURL := normalizeCookieURL(url)
|
|
|
|
return &network.DeleteCookiesArgs{
|
|
URL: &normalizedURL,
|
|
Name: cookie.Name,
|
|
Path: &cookie.Path,
|
|
Domain: &cookie.Domain,
|
|
}
|
|
}
|
|
|
|
func toDriverCookie(c network.Cookie) drivers.HTTPCookie {
|
|
sameSite := drivers.SameSiteDefaultMode
|
|
|
|
switch c.SameSite {
|
|
case network.CookieSameSiteLax:
|
|
sameSite = drivers.SameSiteLaxMode
|
|
case network.CookieSameSiteStrict:
|
|
sameSite = drivers.SameSiteStrictMode
|
|
}
|
|
|
|
return drivers.HTTPCookie{
|
|
Name: c.Name,
|
|
Value: c.Value,
|
|
Path: c.Path,
|
|
Domain: c.Domain,
|
|
Expires: time.Unix(int64(c.Expires), 0),
|
|
SameSite: sameSite,
|
|
Secure: c.Secure,
|
|
HTTPOnly: c.HTTPOnly,
|
|
}
|
|
}
|
|
|
|
func normalizeCookieURL(url string) string {
|
|
const httpPrefix = "http://"
|
|
const httpsPrefix = "https://"
|
|
|
|
if strings.HasPrefix(url, httpPrefix) || strings.HasPrefix(url, httpsPrefix) {
|
|
return url
|
|
}
|
|
|
|
return httpPrefix + url
|
|
}
|