enhance: thread-safe CookieJar, SameSite cookie attr, dynamic Google countries
- Wrap staticCookieJar in struct with sync.RWMutex for thread safety - Add SameSite field to Cookie struct with Strict/Lax/None constants - Update Playwright cookie conversion functions for SameSite - Replace hardcoded 4-country switch with dynamic country code generation Closes #20, #22, #23 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -72,8 +72,37 @@ type BrowserOptions struct {
|
||||
UseLocalOnly bool
|
||||
}
|
||||
|
||||
func sameSiteToPlaywright(s SameSite) *playwright.SameSiteAttribute {
|
||||
switch s {
|
||||
case SameSiteStrict:
|
||||
return playwright.SameSiteAttributeStrict
|
||||
case SameSiteLax:
|
||||
return playwright.SameSiteAttributeLax
|
||||
case SameSiteNone:
|
||||
return playwright.SameSiteAttributeNone
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func playwrightSameSiteToSameSite(s *playwright.SameSiteAttribute) SameSite {
|
||||
if s == nil {
|
||||
return ""
|
||||
}
|
||||
switch *s {
|
||||
case *playwright.SameSiteAttributeStrict:
|
||||
return SameSiteStrict
|
||||
case *playwright.SameSiteAttributeLax:
|
||||
return SameSiteLax
|
||||
case *playwright.SameSiteAttributeNone:
|
||||
return SameSiteNone
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie {
|
||||
return playwright.OptionalCookie{
|
||||
oc := playwright.OptionalCookie{
|
||||
Name: cookie.Name,
|
||||
Value: cookie.Value,
|
||||
Domain: playwright.String(cookie.Host),
|
||||
@@ -81,6 +110,10 @@ func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie {
|
||||
Expires: playwright.Float(float64(cookie.Expires.Unix())),
|
||||
HttpOnly: playwright.Bool(cookie.HttpOnly),
|
||||
}
|
||||
if cookie.SameSite != "" {
|
||||
oc.SameSite = sameSiteToPlaywright(cookie.SameSite)
|
||||
}
|
||||
return oc
|
||||
}
|
||||
|
||||
func playwrightCookieToCookie(cookie playwright.Cookie) Cookie {
|
||||
@@ -91,6 +124,7 @@ func playwrightCookieToCookie(cookie playwright.Cookie) Cookie {
|
||||
Path: cookie.Path,
|
||||
Expires: time.Unix(int64(cookie.Expires), 0),
|
||||
HttpOnly: cookie.HttpOnly,
|
||||
SameSite: playwrightSameSiteToSameSite(cookie.SameSite),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user