UNPKG

shiqiyue-linkedin-private-api

Version:

![Build](https://github.com/eilonmore/linkedin-private-api/workflows/Build/badge.svg?branch=master)

66 lines 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Login = void 0; const cookie_1 = require("cookie"); const lodash_1 = require("lodash"); const config_1 = require("../../config"); const SESSIONS_PATH = `${process.cwd()}/sessions.json`; const parseCookies = (cookies) => cookies.reduce((res, c) => { let parsedCookie = cookie_1.parse(c); parsedCookie = lodash_1.pickBy(parsedCookie, (v, k) => k === Object.keys(parsedCookie)[0]); return lodash_1.merge(res, parsedCookie); }, {}); class Login { constructor({ client }) { this.client = client; } setRequestHeaders({ cookies }) { const cookieStr = lodash_1.reduce(cookies, (res, v, k) => `${res}${k}="${v}"; `, ''); this.client.request.setHeaders({ ...config_1.requestHeaders, cookie: cookieStr, 'csrf-token': cookies.JSESSIONID, }); } async readCacheFile() { return {}; } tryCacheLogin({ useCache = true, cachedSessions, username, }) { if (!useCache) { return false; } if (!username) { throw new TypeError('Must provide username when useCache option is true'); } const cookies = cachedSessions[username]; if (cookies) { this.setRequestHeaders({ cookies }); return true; } return false; } async userPass({ username, password, useCache = true, }) { const cachedSessions = await this.readCacheFile(); if (this.tryCacheLogin({ useCache, cachedSessions, username })) { return this.client; } if (!password) { throw new TypeError('password is required for login'); } const anonymousAuthResponse = await this.client.request.auth.getAnonymousAuth(); const sessionId = parseCookies(anonymousAuthResponse.headers['set-cookie']).JSESSIONID; const authRes = await this.client.request.auth.authenticateUser({ username, password, sessionId }); const parsedCookies = parseCookies(authRes.headers['set-cookie']); this.setRequestHeaders({ cookies: parsedCookies }); return this.client; } userCookie({ username, cookies, }) { console.log(username); this.setRequestHeaders({ cookies }); this.client.li_at = cookies.li_at; this.client.AuthCookies = cookies; return this.client; } } exports.Login = Login; //# sourceMappingURL=login.js.map