From dec2005eed2a4a19cba83e395f3f722cd40d9e6f Mon Sep 17 00:00:00 2001 From: Mike Rode Date: Sun, 1 Sep 2019 15:32:59 -0500 Subject: [PATCH] Filter plex servers based on most recently updated --- package.json | 2 +- server/db/seeders/index.js | 13 +++++++++++-- server/services/plex/auth.js | 11 ++++++----- server/services/plex/importData.js | 3 --- server/services/plex/plexApi.js | 3 +-- test/server/services/plex/auth.test.js | 2 +- test/server/services/plex/importData.test.js | 6 +++--- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 518183b..8189057 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "test": "cross-env NODE_ENV=test PLEX_API_TOKEN=testPlexApiToken TDAW_API_TOKEN=testTdawToken nyc --reporter=html --reporter=text mocha --require babel-core/register 'test/**/*.test.js' --exit", "db:clean": "npm run db:drop && npm run db:create && npm run db:migrate", - "db:create": "babel-node ./scripts/db/create", + "db:create:test": "NODE_ENV=test npx sequelize db:create", "db:create-migration": "babel-node ./scripts/db/createMigration", "db:drop": "babel-node ./scripts/db/drop", "db:migrate": "babel-node ./scripts/db/migrate", diff --git a/server/db/seeders/index.js b/server/db/seeders/index.js index d0ed85d..e8bf85b 100644 --- a/server/db/seeders/index.js +++ b/server/db/seeders/index.js @@ -1,9 +1,18 @@ export default { User: [ { - firstName: 'Mike', + id: 1, + firstName: 'Michael', lastName: 'Rode', - email: 'mike@email.com', + googleId: '101111197386111111151', + email: 'michaelrode44@gmail.com', + plexUrl: 'http://99.99.99.993:32400', + plexPinId: '5425341', + plexToken: 'MkaxxxxxxxJBGJxxxcV2', + sonarrUrl: null, + sonarrApiKey: null, + createdAt: '2019-09-01 14:36:57.418-05', + updatedAt: '2019-09-01 14:37:09.415-05', }, ], }; diff --git a/server/services/plex/auth.js b/server/services/plex/auth.js index 61f1752..b1f2aad 100644 --- a/server/services/plex/auth.js +++ b/server/services/plex/auth.js @@ -81,15 +81,16 @@ const getPlexUrl = async (plexToken, user) => { const res = await request.get(plexUrlParams(plexToken, user)); let formattedResponse = JSON.parse(parser.toJson(res)).MediaContainer .Server; + if (!Array.isArray(formattedResponse)) { formattedResponse = [formattedResponse]; } - formattedResponse.filter(server => { - server.accessToken === plexToken; - }); - console.log('formatted response', formattedResponse); + formattedResponse.reduce((acc, other) => + acc.createdAt > other.createdAt ? acc : other, + ); + const server = formattedResponse.slice(-1)[0]; - console.log('server', server); + await models.User.update( { plexToken: plexToken.trim(), diff --git a/server/services/plex/importData.js b/server/services/plex/importData.js index a753a9c..5b7f5fc 100644 --- a/server/services/plex/importData.js +++ b/server/services/plex/importData.js @@ -18,11 +18,8 @@ const importTvPosters = async user => { where: {UserId: user.id, type: 'show', views: {[Op.gt]: 0}}, }); - console.log('TCL: mostWatched', mostWatched); - console.log('TCL: mostWatched', mostWatched); const imageUrls = await mostWatched.map(async show => { const res = await mdb.searchTv({query: show.title}); - console.log('TCL: res', res); return models.PlexLibrary.update( { poster_path: res.results[0].poster_path, diff --git a/server/services/plex/plexApi.js b/server/services/plex/plexApi.js index 5ce5434..50b5401 100644 --- a/server/services/plex/plexApi.js +++ b/server/services/plex/plexApi.js @@ -78,9 +78,7 @@ const getSections = async function(user) { try { const urlParams = getSectionsUrlParams(user); const getSectionsUrl = helpers.buildUrl(urlParams); - console.log('sec -url', getSectionsUrl); const response = await helpers.request(getSectionsUrl); - console.log('mike-', response); return response.MediaContainer.Directory; } catch (error) { return { @@ -97,6 +95,7 @@ const getLibraryDataBySection = async function({sectionKey}, user) { const urlParams = getLibraryDataBySectionUrlParams(sectionKey, user); const getLibraryDataBySectionUrl = helpers.buildUrl(urlParams); const response = await helpers.request(getLibraryDataBySectionUrl); + console.log('library-data-by-section---', response.MediaContainer.Metadata); return response.MediaContainer.Metadata; } catch (error) { console.log('caught error', error); diff --git a/test/server/services/plex/auth.test.js b/test/server/services/plex/auth.test.js index ff7a1b6..43441f2 100644 --- a/test/server/services/plex/auth.test.js +++ b/test/server/services/plex/auth.test.js @@ -4,7 +4,7 @@ import app from '../../../../index'; describe('Users', () => { describe('GET /api/plex/auth', async () => { - it.only('should get plex auth token', done => { + it('should get plex auth token', done => { nocks.auth(); chai diff --git a/test/server/services/plex/importData.test.js b/test/server/services/plex/importData.test.js index cb93571..32743bd 100644 --- a/test/server/services/plex/importData.test.js +++ b/test/server/services/plex/importData.test.js @@ -18,7 +18,7 @@ describe('ImportData', () => { }); describe('GET /plex/import/sections', () => { - it('should find and store sections in the database', async () => { + it.only('should find and store sections in the database', async () => { nocks.plexSections(); await importData.importSections(); const sections = await models.PlexSection.findAll(); @@ -41,7 +41,7 @@ describe('ImportData', () => { }); describe('GET /plex/import/libraries', () => { - it('should find and store libraries in the database', async () => { + it.only('should find and store libraries in the database', async () => { nocks.plexSections(); nocks.plexLibrary(); await importData.importLibraries(); @@ -57,7 +57,7 @@ describe('ImportData', () => { }); describe('GET /plex/import/most-watched', () => { - it('should find and store libraries in the database', async () => { + it.only('should find and store libraries in the database', async () => { nocks.plexSections(); nocks.plexLibrary(); await importData.importLibraries();