Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 451b67630a | |||
| 096bbdf085 | |||
| e914e4ab45 | |||
| c1461e1f41 | |||
| 91bf2c1e2a | |||
| da3df383ed | |||
| 9816b978d3 | |||
| 0581813ee3 | |||
| edf1de223e | 
							
								
								
									
										2
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | ||||
| [submodule "torrent_search"] | ||||
| 	path = torrent_search | ||||
| 	url = git@github.com:KevinMidboe/torrent_search.git | ||||
| 	url = https://github.com/KevinMidboe/torrent_search.git | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| language: node_js | ||||
| node_js: '8.7.0' | ||||
| git: | ||||
|    submodules: false | ||||
|    submodules: true | ||||
| script: | ||||
|    yarn test | ||||
| before_install: | ||||
|   | ||||
| @@ -3,7 +3,8 @@ | ||||
| [](https://snyk.io/test/github/KevinMidboe/seasonedShows?targetFile=seasoned_api/package.json) | ||||
| []() | ||||
|  | ||||
| Your customly *seasoned* movie and show requester, downloader and organizer. Demo page can be viewed [here](https://kevinmidboe.com/request) | ||||
| Your customly *seasoned* movie and show requester, downloader and organizer.   | ||||
| 📺 [Demo](https://kevinmidboe.com/request) | ||||
|  | ||||
| ## About | ||||
| The goal of this project is to create a full custom stack that can to everything surround downloading, organizing and notifiyng of new media. From the top down we have a website using [tmdb](https://www.themoviedb.com) api to search for from over 350k movies and 70k tv shows. Using [hjone72](https://github.com/hjone72/PlexAuth) great PHP reverse proxy we can have a secure way of allowing users to login with their plex credentials which limits request capabilites to only users that are authenticated to use your plex library.  | ||||
|   | ||||
| @@ -8,21 +8,17 @@ const plexRepository = new PlexRepository(); | ||||
| const cache = new Cache(); | ||||
| const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey')); | ||||
|  | ||||
| const MailTemplate = require('src/plex/mailTemplate'); | ||||
| const nodemailer = require('nodemailer'); | ||||
|  | ||||
|  | ||||
| class RequestRepository { | ||||
|    constructor(cache, database) { | ||||
|    constructor(database) { | ||||
|       this.database = database || establishedDatabase; | ||||
|       this.queries = { | ||||
|          insertRequest: `INSERT INTO requests(id,title,year,poster_path,background_path,requested_by,ip,user_agent,type) | ||||
|           VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, | ||||
|          fetchRequestedItems: 'SELECT * FROM requests ORDER BY date DESC LIMIT 25 OFFSET ?*25-25', | ||||
|          fetchRequestedItemsByStatus: 'SELECT * FROM requests WHERE status IS ? AND type LIKE ? DESC LIMIT 25 OFFSET ?*25-25', | ||||
|          fetchRequestedItemsByStatus: 'SELECT * FROM requests WHERE status IS ? AND type LIKE ? ORDER BY date DESC LIMIT 25 OFFSET ?*25-25', | ||||
|          updateRequestedById: 'UPDATE requests SET status = ? WHERE id is ? AND type is ?', | ||||
|          checkIfIdRequested: 'SELECT * FROM requests WHERE id IS ? AND type IS ?', | ||||
|          userRequests: 'SELECT * FROM requests WHERE requested_by IS ?' | ||||
|          userRequests: 'SELECT * FROM requests WHERE requested_by IS ?', | ||||
|       }; | ||||
|       this.cacheTags = { | ||||
|          search: 'se', | ||||
| @@ -51,10 +47,7 @@ class RequestRepository { | ||||
|          .then(() => this.database.get(this.queries.checkIfIdRequested, [tmdbMovie.id, tmdbMovie.type])) | ||||
|          .then((result, error) => { | ||||
|             if (error) { throw new Error(error); } | ||||
|             let already_requested = false; | ||||
|             if (result) { already_requested = true; } | ||||
|  | ||||
|             tmdbMovie.requested = already_requested; | ||||
|             tmdbMovie.requested = result ? true : false; | ||||
|             return tmdbMovie; | ||||
|          }); | ||||
|    } | ||||
| @@ -85,13 +78,15 @@ class RequestRepository { | ||||
|    } | ||||
|  | ||||
|    userRequests(user) { | ||||
|    	return Promise.resolve() | ||||
|       return Promise.resolve() | ||||
|          .then(() => this.database.all(this.queries.userRequests, user.username)) | ||||
|          .catch((error) => { | ||||
|             if (String(error).includes('no such column')) { throw new Error('Username not found'); } | ||||
|             else { throw new Error('Unable to fetch your requests')} | ||||
|             if (String(error).includes('no such column')) { | ||||
|                throw new Error('Username not found'); | ||||
|             } | ||||
|             throw new Error('Unable to fetch your requests'); | ||||
|          }) | ||||
|          .then((result) => { return result }) | ||||
|          .then((result) => { return result; }); | ||||
|    } | ||||
|  | ||||
|    updateRequestedById(id, type, status) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user