aboutsummaryrefslogtreecommitdiff
path: root/cookies-storage.js
blob: 25d7f1c868ae1584c1df3cf10ca4a11a14806935 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
    }
};