package cookies import ( "os" "path/filepath" "github.com/pkg/errors" ) type Cookier interface { LoadCookies() ([]byte, error) SaveCookies(data []byte) error } type localCookie struct { path string } func NewLoadCookie(path string) Cookier { if path == "" { panic("path is required") } if err := os.MkdirAll(filepath.Dir(path), 0644); err != nil { panic(err) } return &localCookie{ path: path, } } // LoadCookies 从文件中加载 cookies。 func (c *localCookie) LoadCookies() ([]byte, error) { data, err := os.ReadFile(c.path) if err != nil { return nil, errors.Wrap(err, "failed to read cookies from tmp file") } return data, nil } // SaveCookies 保存 cookies 到文件中。 func (c *localCookie) SaveCookies(data []byte) error { return os.WriteFile(c.path, data, 0644) } // GetCookiesFilePath 获取 cookies 文件路径。 func GetCookiesFilePath() string { tmpDir := os.TempDir() filePath := filepath.Join(tmpDir, "cookies.json") return filePath }