12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace GuzzleHttp\Cookie;
- class FileCookieJar extends CookieJar
- {
-
- private $filename;
-
- private $storeSessionCookies;
-
-
- public function __construct($cookieFile, $storeSessionCookies = false)
- {
- $this->filename = $cookieFile;
- $this->storeSessionCookies = $storeSessionCookies;
- if (file_exists($cookieFile)) {
- $this->load($cookieFile);
- }
- }
-
- public function __destruct()
- {
- $this->save($this->filename);
- }
-
- public function save($filename)
- {
- $json = [];
- foreach ($this as $cookie) {
-
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
- if (false === file_put_contents($filename, json_encode($json))) {
- throw new \RuntimeException("Unable to save file {$filename}");
- }
- }
-
- public function load($filename)
- {
- $json = file_get_contents($filename);
- if (false === $json) {
- throw new \RuntimeException("Unable to load file {$filename}");
- }
- $data = json_decode($json, true);
- if (is_array($data)) {
- foreach (json_decode($json, true) as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (strlen($data)) {
- throw new \RuntimeException("Invalid cookie file: {$filename}");
- }
- }
- }
|