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;
|
||||
mediaInfo.bitrate = plexStream.bitrate;
|
||||
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