From d789d343af03fcbe169166464bb682a28568e768 Mon Sep 17 00:00:00 2001 From: "mike.rode" Date: Mon, 18 Feb 2019 15:19:54 -0600 Subject: [PATCH] Add auth module. --- server/services/plexApi/auth.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 server/services/plexApi/auth.js diff --git a/server/services/plexApi/auth.js b/server/services/plexApi/auth.js new file mode 100644 index 0000000..2ad1a00 --- /dev/null +++ b/server/services/plexApi/auth.js @@ -0,0 +1,27 @@ +import uuid from 'uuid/v1'; +import btoa from 'btoa'; +import request from 'request-promise'; + +const rxAuthToken = /authenticationToken="([^"]+)"/; + +const options = (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 = (username, password) => { + request.post(options(username, password)).then(res => { + const token = res.match(rxAuthToken)[1]; + return token; + }); +}; + +export default fetchToken;