69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
'use strict'
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
const request =require('request')
|
|
const Headers = require('./headers')
|
|
|
|
// files & endpoints
|
|
const RAW_COOKIE_FILE = 'raw_jar.txt'
|
|
const JSON_COOKIE_FILE = 'cookies.json'
|
|
const TEST_ENDPOINT = 'https://layla.amazon.de/api/devices/device'
|
|
|
|
// Returns the full raw cookies path
|
|
const getRawCookiePath = data_dir => path.join(data_dir, RAW_COOKIE_FILE)
|
|
// Checks if the JSON cookie file exists
|
|
const getJsonCookiePath = data_dir => path.join(data_dir, JSON_COOKIE_FILE)
|
|
// Checks if the raw cookie file exists
|
|
const checkRawCookiesExist = data_dir => fs.existsSync(getRawCookiePath(data_dir))
|
|
// Checks if the JSON cookie file exists
|
|
const checkJsonCookiesExist = data_dir => fs.existsSync(getJsonCookiePath(data_dir))
|
|
// Checks if the raw cookie file exists
|
|
const deleteRawCookies = data_dir => fs.removeSync(getRawCookiePath(data_dir))
|
|
// Checks if the JSON cookie file exists
|
|
const deleteJsonCookies = data_dir => fs.removeSync(getJsonCookiePath(data_dir))
|
|
// Returns the cookies as a header compatible string
|
|
const transformCookiesForHeader = json_cookies => {
|
|
let string_cookies = ''
|
|
json_cookies.forEach(cookie => {
|
|
Object.keys(cookie).forEach(key => {
|
|
if (key == 'name') return
|
|
string_cookies += key == 'value' ? cookie.name + '=' + cookie.value : key + '=' + cookie[key]
|
|
string_cookies += ';'
|
|
})
|
|
})
|
|
return string_cookies
|
|
}
|
|
// Validate the cookie
|
|
const validateCookie = (data_dir) => {
|
|
const json_cookies = require(path.join(data_dir, JSON_COOKIE_FILE))
|
|
const string_cookies = transformCookiesForHeader(json_cookies)
|
|
const headers = Headers.getFetchHeaders(string_cookies)
|
|
return new Promise((resolve, reject) => {
|
|
request.get({headers, url: TEST_ENDPOINT}, (error, response, body) => {
|
|
try {
|
|
let contents = JSON.parse(body)
|
|
if (contents.devices) {
|
|
resolve([true, contents])
|
|
} else {
|
|
reject([false, null])
|
|
}
|
|
} catch (e) {
|
|
reject([false, body])
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
getRawCookiePath,
|
|
getJsonCookiePath,
|
|
checkRawCookiesExist,
|
|
checkJsonCookiesExist,
|
|
deleteRawCookies,
|
|
deleteJsonCookies,
|
|
validateCookie,
|
|
transformCookiesForHeader,
|
|
RAW_COOKIE_FILE,
|
|
JSON_COOKIE_FILE,
|
|
} |