mirror of
https://github.com/mjrode/WhatToWatch.git
synced 2026-05-07 13:09:08 -05:00
WIP: Building out error handling.
This commit is contained in:
@@ -4,5 +4,6 @@ import tdawService from '../services/tdaw';
|
||||
const router = Router();
|
||||
|
||||
router.get('/similar', tdawService.similarMedia);
|
||||
router.get('/most-watched', tdawService.mostWatched);
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import express from 'express';
|
||||
import {json, urlencoded} from 'body-parser';
|
||||
// eslint-disable-next-line import/named
|
||||
import {sequelize} from './db/models';
|
||||
import plex from './routes/plex.route';
|
||||
import tdaw from './routes/tdaw.route';
|
||||
@@ -21,6 +22,19 @@ export default () => {
|
||||
server.use('/plex', plex);
|
||||
server.use('/tdaw', tdaw);
|
||||
|
||||
server.get('*', function(req, res, next) {
|
||||
const err = new Error('Page Not Found');
|
||||
err.statusCode = 404;
|
||||
next(err);
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
server.use(function(err, req, res, next) {
|
||||
console.error(err.message); // Log error message in our server's console
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
if (!err.statusCode) err.statusCode = 500; // If err has no specified error code, set error code to 'Internal Server Error (500)'
|
||||
res.status(err.statusCode).send(err.message); // All HTTP requests must have a response, so let's send back an error with its status code and message
|
||||
});
|
||||
return server;
|
||||
};
|
||||
|
||||
|
||||
@@ -20,9 +20,13 @@ const buildUrl = function(urlParams) {
|
||||
delete params.host;
|
||||
const urlHash = params;
|
||||
|
||||
console.log('hash', urlHash);
|
||||
|
||||
if (typeof urlHash !== 'object') {
|
||||
throw new Error(`Invalid urlParams: ${urlHash}`);
|
||||
}
|
||||
return buildUrlPackage(host, urlHash);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
}
|
||||
};
|
||||
@@ -37,16 +41,16 @@ const request = async function(url) {
|
||||
return resolve(formatResponse(response));
|
||||
})
|
||||
.catch(error => {
|
||||
console.log(error);
|
||||
if (error.response) {
|
||||
console.log('Status Error--', error.response.status);
|
||||
console.log('Headers Error--', error.response.headers);
|
||||
console.log('Error: Status--', error.response.status);
|
||||
console.log('Error: Headers--', error.response.headers);
|
||||
return reject(error.response);
|
||||
}
|
||||
if (error.request) {
|
||||
console.log('Request Error--', error.request);
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
console.log('Error: Request Path--', error.request._options.path);
|
||||
} else {
|
||||
console.log('Error', error.message);
|
||||
console.log('Error:', error.message);
|
||||
}
|
||||
return reject(error);
|
||||
});
|
||||
@@ -55,7 +59,6 @@ const request = async function(url) {
|
||||
|
||||
const handleError = (res, method) => err => {
|
||||
console.log('Error in', method);
|
||||
console.log(err);
|
||||
const {code, message} = err.responseData || {
|
||||
code: 500,
|
||||
message: 'An unknown error occurred.',
|
||||
|
||||
@@ -12,13 +12,13 @@ const getAuthToken = async (req, res) => {
|
||||
});
|
||||
};
|
||||
|
||||
const getUsers = async (req, res) => {
|
||||
try {
|
||||
const users = await plexApi.getUsers();
|
||||
res.json(users);
|
||||
} catch (error) {
|
||||
helpers.handleError(res, getUsers.name);
|
||||
}
|
||||
const getUsers = (req, res) => {
|
||||
plexApi
|
||||
.getUsers()
|
||||
.then(users => {
|
||||
res.json(users);
|
||||
})
|
||||
.catch(helpers.handleError(res, getUsers.name));
|
||||
};
|
||||
|
||||
const getMostWatched = async (req, res) => {
|
||||
|
||||
@@ -51,11 +51,7 @@ const getUsers = async function() {
|
||||
const response = await helpers.request(getUsersUrl);
|
||||
return response.MediaContainer.User;
|
||||
} catch (error) {
|
||||
return {
|
||||
code: error.status,
|
||||
message: error.statusText,
|
||||
url: error.config.url,
|
||||
};
|
||||
return error;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -97,6 +93,7 @@ const getLibraryDataBySection = async function({sectionId}) {
|
||||
const response = await helpers.request(getLibraryDataBySectionUrl);
|
||||
return response.MediaContainer.Metadata;
|
||||
} catch (error) {
|
||||
console.log('caught error', error);
|
||||
return {
|
||||
code: error.status,
|
||||
message: error.statusText,
|
||||
|
||||
@@ -12,6 +12,14 @@ const similarMedia = async (req, res) => {
|
||||
}
|
||||
};
|
||||
|
||||
const mostWatched = async (req, res) => {
|
||||
console.log('was i called');
|
||||
const response = await tdawApi.mostWatched();
|
||||
console.log(response);
|
||||
res.json(response);
|
||||
};
|
||||
|
||||
export default {
|
||||
similarMedia,
|
||||
mostWatched,
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import config from '../../../config';
|
||||
import helpers from '../helpers';
|
||||
import models from '../../db/models';
|
||||
|
||||
const tdawMediaUrl = function(mediaName, mediaType) {
|
||||
return {
|
||||
@@ -18,7 +19,7 @@ const similarMedia = async function(mediaName, mediaType) {
|
||||
const urlParams = tdawMediaUrl(mediaName, mediaType);
|
||||
const mediaUrl = helpers.buildUrl(urlParams);
|
||||
const response = await helpers.request(mediaUrl);
|
||||
return response.Results;
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
return {
|
||||
@@ -29,4 +30,11 @@ const similarMedia = async function(mediaName, mediaType) {
|
||||
}
|
||||
};
|
||||
|
||||
export default {similarMedia, tdawMediaUrl};
|
||||
const mostWatched = async () => {
|
||||
return models.PlexLibrary.findAll({
|
||||
order: [['views', 'DESC']],
|
||||
limit: 10,
|
||||
});
|
||||
};
|
||||
|
||||
export default {similarMedia, tdawMediaUrl, mostWatched};
|
||||
|
||||
Reference in New Issue
Block a user