Open srlehn opened 3 months ago
With iterators this PR provides the following API:
func TraverseCookies(ctx context.Context, filters ...Filter) CookieSeq
func AllCookies(filters ...Filter) Cookies
func ReadCookies(ctx context.Context, filters ...Filter) (Cookies, error)
type BrowserInfo interface {...}
type Cookie struct {..., Browser BrowserInfo}
type Cookies []*Cookie
func (c Cookies) Seq() CookieSeq
type CookieSeq iter.Seq2[*Cookie, error]
func MergeCookieSeqs(seqs ...CookieSeq) CookieSeq
func (s CookieSeq) Merge(seqs ...CookieSeq) CookieSeq
func (s CookieSeq) Chan(ctx context.Context) <-chan *Cookie
func (s CookieSeq) Collect(ctx context.Context) Cookies
func (s CookieSeq) Export(ctx context.Context, w io.Writer)
func (s CookieSeq) Filter(ctx context.Context, filters ...Filter) CookieSeq
func (s CookieSeq) FirstMatch(ctx context.Context, filters ...Filter) *Cookie
func (s CookieSeq) OnlyCookies() CookieSeq
func (s CookieSeq) ReadAllCookies(ctx context.Context) (Cookies, error)
func FilterCookies[S CookieSeq | ~[]*Cookie | ~[]*http.Cookie](ctx context.Context, cookies S, filters ...Filter) CookieSeq
func FilterCookie[T Cookie | http.Cookie](ctx context.Context, cookie *T, filters ...Filter) bool
func ExportCookies[S CookieSeq | []*Cookie | []*http.Cookie](ctx context.Context, w io.Writer, cookies S)
func RegisterFinder(browser string, finder CookieStoreFinder)
type CookieStore interface {BrowserInfo, ...}
func FindAllCookieStores(ctx context.Context) []CookieStore
type CookieStoreFinder interface {FindCookieStores() CookieStoreSeq}
type CookieStoreSeq iter.Seq2[CookieStore, error]
func TraverseCookieStores(ctx context.Context) CookieStoreSeq
func (s CookieStoreSeq) AllCookieStores(ctx context.Context) []CookieStore
func (s CookieStoreSeq) TraverseCookies(ctx context.Context, filters ...Filter) CookieSeq
Iterator Preview
Set the env var GOEXPERIMENT=rangefunc for enabling for ranges over functions.
Please test and comment!