Files
WhatToWatch/server/services/plex/auth.js
T
2019-02-23 20:26:05 -06:00

27 lines
690 B
JavaScript

import uuid from 'uuid';
import btoa from 'btoa';
import request from 'request-promise';
const rxAuthToken = /authenticationToken="([^"]+)"/;
const urlParams = (username, password) => ({
url: 'https://plex.tv/users/sign_in.xml',
headers: {
'X-Plex-Client-Identifier': uuid(),
Authorization: `Basic ${encryptUserCreds(username, password)}`,
},
});
const encryptUserCreds = (username, password) => {
const creds = `${username}:${password}`;
return btoa(creds);
};
const fetchToken = async (username, password) => {
const res = await request.post(urlParams(username, password));
const token = res.match(rxAuthToken)[1];
return token;
};
export default fetchToken;