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;