8
									
								
								client/.babelrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								client/.babelrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| /* | ||||
| 	./.babelrc | ||||
| */ | ||||
| { | ||||
| 	"presets":[ | ||||
| 		"es2015", "env", "react" | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										23
									
								
								client/app/components/App.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								client/app/components/App.jsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| /* | ||||
| 	./app/components/App.jsx | ||||
| 	 | ||||
| 	<FetchData url={"https://apollo.kevinmidboe.com/api/v1/plex/playing"} /> | ||||
| */ | ||||
| import React from 'react'; | ||||
| import FetchData from './FetchData.js'; | ||||
| import ListStrays from './ListStrays.jsx' | ||||
|  | ||||
| export default class App extends React.Component { | ||||
| 	render() { | ||||
| 		return ( | ||||
| 			<div> | ||||
| 				<div style={{textAlign: 'center'}}> | ||||
| 					<h1>Welcome to Seasoned</h1> | ||||
| 				</div> | ||||
| 					<ListStrays /> | ||||
|  | ||||
| 					<FetchData /> | ||||
| 			</div> | ||||
| 		); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										58
									
								
								client/app/components/FetchData.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								client/app/components/FetchData.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| import React from 'react'; | ||||
|  | ||||
| class FetchData extends React.Component { | ||||
| 	constructor(props){ | ||||
| 		super(props) | ||||
| 		this.state = { | ||||
| 			imgUrls: [], | ||||
|       		hei: '1', | ||||
|       		intervalId: null, | ||||
|       		url: '' | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	componentDidMount(){ | ||||
| 		var that = this; | ||||
| 		fetch("https://apollo.kevinmidboe.com/api/v1/plex/playing").then( | ||||
| 			function(response){ | ||||
| 				response.json().then(function(data){ | ||||
| 					console.log(data.size); | ||||
| 					that.setState({ | ||||
| 						imgUrls: that.state.imgUrls.concat(data.video) | ||||
| 					}) | ||||
| 					console.log(data.video.title); | ||||
| 				}) | ||||
| 			} | ||||
| 		) | ||||
| 	} | ||||
|  | ||||
| 	componentWillUnmount() { | ||||
| 	   // use intervalId from the state to clear the interval | ||||
| 	   clearInterval(this.state.intervalId); | ||||
| 	} | ||||
|  | ||||
| 	getPlaying() { | ||||
| 		console.log('Should not reach') | ||||
| 		// Need callback to work | ||||
| 		// Should try to clear out old requests to limit mem use | ||||
| 	} | ||||
|  | ||||
| 	render(){ | ||||
| 			return( | ||||
| 			<div className="FetchData"> | ||||
| 			{this.state.imgUrls.map((imgObj) => { | ||||
| 				return ([ | ||||
| 					<span>{imgObj.title}</span>, | ||||
| 					<span>{imgObj.season}</span>, | ||||
| 					<span>{imgObj.episode}</span>, | ||||
| 				]); | ||||
| 			})} | ||||
|  | ||||
| 			</div> | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| } | ||||
|  | ||||
| export default FetchData; | ||||
							
								
								
									
										45
									
								
								client/app/components/ListStrays.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								client/app/components/ListStrays.jsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| import React from 'react'; | ||||
|  | ||||
| class ListStrays extends React.Component { | ||||
| 	constructor(props){ | ||||
| 		super(props) | ||||
| 		this.state = { | ||||
| 			strays: [], | ||||
|       		hei: '1' | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	componentDidMount(){ | ||||
| 		var that = this; | ||||
| 		fetch('https://apollo.kevinmidboe.com/api/v1/seasoned/all').then( | ||||
| 			function(response){ | ||||
| 				response.json().then(function(data){ | ||||
| 					// console.log(data); | ||||
| 					that.setState({ | ||||
| 						strays: that.state.strays.concat(data) | ||||
| 					}) | ||||
| 				}) | ||||
| 			} | ||||
| 		) | ||||
| 	} | ||||
|  | ||||
| 	render(){ | ||||
| 		return( | ||||
| 			<div className="ListStrays"> | ||||
| 				{this.state.strays.map((strayObj) => { | ||||
| 					if (strayObj.verified == 0) { | ||||
| 						var url = "https://kevinmidboe.com/seasoned/verified.html?id=" + strayObj.id; | ||||
| 						console.log(url); | ||||
| 						return ([ | ||||
| 							<span key={strayObj.id}>{strayObj.name}</span>, | ||||
| 							<a href={url}>{strayObj.id}</a> | ||||
| 						]) | ||||
| 					} | ||||
| 				})} | ||||
|  | ||||
| 			</div> | ||||
| 		) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| export default ListStrays; | ||||
							
								
								
									
										12
									
								
								client/app/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								client/app/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta charset="utf-8"> | ||||
|     <title>seasoned Shows</title> | ||||
|   </head> | ||||
|   <body> | ||||
|     <div id="root"> | ||||
|  | ||||
|     </div> | ||||
|   </body> | ||||
| </html> | ||||
							
								
								
									
										15
									
								
								client/app/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								client/app/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
| * @Author: KevinMidboe | ||||
| * @Date:   2017-06-01 21:08:55 | ||||
| * @Last Modified by:   KevinMidboe | ||||
| * @Last Modified time: 2017-06-01 21:34:32 | ||||
|  | ||||
|     ./client/index.js | ||||
|     which is the webpack entry file | ||||
| */ | ||||
|  | ||||
| import React from 'react'; | ||||
| import ReactDOM from 'react-dom'; | ||||
| import App from './components/App.jsx'; | ||||
|  | ||||
| ReactDOM.render(<App />, document.getElementById('root')); | ||||
| @@ -5,9 +5,22 @@ | ||||
|   "repository": "https://github.com/KevinMidboe/seasonedShows", | ||||
|   "author": "Kevin Midboe", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "start": "webpack-dev-server" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "html-webpack-plugin": "^2.28.0", | ||||
|     "path": "^0.12.7", | ||||
|     "react": "^15.5.4", | ||||
|     "react-dom": "^15.5.4", | ||||
|     "webpack": "^2.6.1", | ||||
|     "webpack-dev-server": "^2.4.5" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "babel-core": "^6.24.1", | ||||
|     "babel-loader": "^7.0.0", | ||||
|     "babel-preset-env": "^1.5.1", | ||||
|     "babel-preset-es2015": "^6.24.1", | ||||
|     "babel-preset-react": "^6.24.1" | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										33
									
								
								client/webpack.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								client/webpack.config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| /* | ||||
| * @Author: KevinMidboe | ||||
| * @Date:   2017-06-01 19:09:16 | ||||
| * @Last Modified by:   KevinMidboe | ||||
| * @Last Modified time: 2017-06-01 22:11:51 | ||||
| */ | ||||
|  | ||||
| const path = require('path'); | ||||
|  | ||||
| const HtmlWebpackPlugin = require('html-webpack-plugin'); | ||||
| const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({ | ||||
| 	template: './app/index.html', | ||||
| 	filename: 'index.html', | ||||
| 	inject: 'body' | ||||
| }) | ||||
|  | ||||
| module.exports = { | ||||
| 	entry: './app/index.js', | ||||
| 	output: { | ||||
| 		path: path.resolve('dist'), | ||||
| 		filename: 'index_bundle.js' | ||||
| 	}, | ||||
| 	devServer: { | ||||
| 		headers: { "Access-Control-Allow-Origin": "*" } | ||||
| 	}, | ||||
| 	module: { | ||||
| 		loaders: [ | ||||
| 				{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, | ||||
| 				{ test: /\.jsx$/, loader: 'babel-loader', exclude: /node_modules/ } | ||||
|     	] | ||||
|   	}, | ||||
|   	plugins: [HtmlWebpackPluginConfig] | ||||
| } | ||||
							
								
								
									
										1072
									
								
								client/yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										1072
									
								
								client/yarn.lock
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -6,7 +6,9 @@ function convertStreamToMediaInfo(plexStream) { | ||||
| 	mediaInfo.duration = plexStream.duration; | ||||
| 	mediaInfo.height = plexStream.height; | ||||
| 	mediaInfo.width = plexStream.width; | ||||
| 	if (plexStream.bitrate) { | ||||
| 		mediaInfo.bitrate = plexStream.bitrate; | ||||
| 	} | ||||
| 	mediaInfo.resolution = plexStream.videoResolution; | ||||
| 	mediaInfo.framerate = plexStream.videoFrameRate; | ||||
| 	mediaInfo.protocol = plexStream.protocol; | ||||
|   | ||||
| @@ -2,7 +2,9 @@ | ||||
| var express    = require('express');        // call express | ||||
| var app        = express();                 // define our app using express | ||||
| var bodyParser = require('body-parser');  | ||||
|  | ||||
| var fs = require('fs') | ||||
| var morgan = require('morgan') | ||||
| var path = require('path') | ||||
|  | ||||
| // this will let us get the data from a POST | ||||
| // configure app to use bodyParser() | ||||
| @@ -10,6 +12,8 @@ app.use(bodyParser.json()); | ||||
| app.use(bodyParser.urlencoded({ extended: true })); | ||||
|  | ||||
| var port = 31459;        // set our port | ||||
| var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), {flags: 'a'}) | ||||
| var logger = morgan('combined', {stream: accessLogStream}); | ||||
|  | ||||
| var router = express.Router(); | ||||
|  | ||||
| @@ -17,6 +21,9 @@ router.use(function(req, res, next) { | ||||
|     // do logging | ||||
|     console.log('Something is happening.'); | ||||
| 	res.setHeader('Access-Control-Allow-Origin', 'https://kevinmidboe.com'); | ||||
| 	logger(req, res, function (err) { | ||||
| 		if (err) return done(err) | ||||
| 	}); | ||||
|     next(); | ||||
| }); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user