aboutsummaryrefslogtreecommitdiff
path: root/cookies-storage.js
diff options
context:
space:
mode:
Diffstat (limited to 'cookies-storage.js')
-rw-r--r--cookies-storage.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/cookies-storage.js b/cookies-storage.js
new file mode 100644
index 0000000..25d7f1c
--- /dev/null
+++ b/cookies-storage.js
@@ -0,0 +1,44 @@
+const fs = require('fs').promises
+
+let storageFileName = null
+
+async function exists(path) {
+ try {
+ await fs.access(path)
+ return true
+ } catch {
+ return false
+ }
+}
+
+module.exports = {
+ async save(newCookies) {
+ let currentCookies = await this.get()
+ if (currentCookies.length) {
+ for (let newCookie of newCookies) {
+ if (!currentCookies.length)
+ break
+ let i = currentCookies.findIndex((c) => {
+ return c.domain === newCookie.domain
+ && c.path === newCookie.path
+ && c.name === newCookie.name
+ })
+ if (i !== -1)
+ currentCookies.splice(i, 1)
+ }
+ }
+ currentCookies.push(...newCookies)
+ // console.log('[cookies.save] saving cookies:', currentCookies)
+ await fs.writeFile(storageFileName, JSON.stringify(currentCookies, null, 2), 'utf-8')
+ },
+
+ async get() {
+ if (!(await exists(storageFileName)))
+ return []
+ return JSON.parse(await fs.readFile(storageFileName, 'utf-8'))
+ },
+
+ setFileName(name) {
+ storageFileName = name
+ }
+}; \ No newline at end of file