Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions dustin/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/node_modules/*
**/vendor/*
**/*.min.js
/*.md
/package.json
41 changes: 41 additions & 0 deletions dustin/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"rules": {
"no-console": 0,
"indent": [
2,
2
],
"quotes": [
2,
"single"
],
"linebreak-style": [
2,
"unix"
],
"semi": [
2,
"always"
]
},
"env": {
"es6": true,
"node": true,
"browser": true,
"mocha": true
},
"globals": {
"describe": false,
"it": false,
"beforeEach": false,
"afterEach": false,
"before": false,
"after": false
},
"ecmaFeatures": {
"modules": true,
"experimentalObjectRestSpread": true,
"impliedStrict": true
},
"extends": "eslint:recommended"
}
2 changes: 2 additions & 0 deletions dustin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/db
16 changes: 16 additions & 0 deletions dustin/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
language: node_js
node_js:
- 4
services:
- mongodb
addons:
apt:
sources:
- mongodb-3.2.4-precise
packages:
- mongodb-org-server
sudo: required
before_script: npm install
script:
- npm run test
- npm run lint
24 changes: 24 additions & 0 deletions dustin/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const gulp = require('gulp');
const mocha = require('gulp-mocha');
const lint = require('gulp-eslint');

//var js = ['./model/**/*.js', './lib/**/*.js', './routes/**/*.js', './test/**/*.js', './*.js' ]

gulp.task('linter' , () => {
return gulp.src(['./*.js', './test/*.js', './lib/*.js'])
.pipe(lint())
.pipe(lint.format());
});

gulp.task('tests', () => {
return gulp.src(['./*.js', './test/*.js', './lib/*.js'], {read: false})
.pipe(mocha({reporter: 'nyan'}));
});

gulp.task('watch', () => {
gulp.watch(['./*.js', './test/*.js', './lib/*.js', './model/**/*.js'], ['linter', 'tests']);
});

gulp.task('default', ['linter', 'tests', 'watch'], () => {

});
19 changes: 19 additions & 0 deletions dustin/lib/basic_auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use strict';

module.exports = function(req, res, next) {

let authBuff = new Buffer(req.headers.authorization.split(' ').pop(), 'base64');
let authArray = authBuff.toString().split(':');
authBuff.fill(0);

req.auth = {
username: authArray[0],
password: authArray[1]
};

if(!req.auth.username || !req.auth.password) {
return next(new Error('Username or Password missing'));
}

next();
};
6 changes: 6 additions & 0 deletions dustin/lib/errorhandler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = function (err, req, res, next) {
res.status(500).json({
message: err.message
});
next();
};
27 changes: 27 additions & 0 deletions dustin/lib/jwt_auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';
var jwt = require('jsonwebtoken');
var User = require('../model/user');
const secret = process.env.SECRET || 'changeme';

module.exports = function (req, res, next) {
let token = req.headers.token || req.headers.token;
let tokenErr = new Error('Authorization Failure');
let decodedToken;

if (!token) return next(tokenErr);

try {
decodedToken = jwt.verify(token, secret);
} catch (e) {
return next(e);
}

User.findOne({
_id: decodedToken._id
}, (err, user) => {
if (!user || err) return next(err);
req.user = user;
next();
});

};
23 changes: 23 additions & 0 deletions dustin/model/company.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';
const mongoose = require('mongoose');

const Company = new mongoose.Schema({
name: String,
tvDealReached: Boolean,
seekAmount: Number,
seekEquity: Number,
seekValuation: Number,
tvDealAmount: Number,
tvDealEquity: Number,
tvDealValuation: Number,
actualDealReached: Boolean,
actualDealAmount: Number,
actualDealEquity: Number,
actualDealValuation: Number,
season: Number,
episode: Number
//sharks: Schema.Types.sharks;
//{type: Number, default: 0}
});

module.exports = mongoose.model('companies', Company);
85 changes: 85 additions & 0 deletions dustin/model/db_seeds/company_seeds.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
'use strict';

const mongoose = require('mongoose');
const Company = require('../../schema/companies');

process.env.NODE_ENV = 'DEV';
if (process.env.NODE_ENV === 'TEST') mongoose.connect('mongodb://localhost/test_db');
if (process.env.NODE_ENV === 'DEV') mongoose.connect('mongodb://localhost/dev_db');

mongoose.connection.collections['companies'].drop(function () {
console.log('collection dropped');
});

new Company({
name: 'Scrub Daddy',
tvDealReached: true,
tvDealAmount: 300000,
tvDealEquity: .33,
tvDealValuation: 1000000,
actualDealReached: true,
season: 4,
episode: 7
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Squatty Potty',
tvDealReached: true,
tvDealAmount: 350000,
tvDealEquity: .1,
tvDealValuation: 3500000,
actualDealReached: true,
season: 6,
episode: 9
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Cousins Maine Lobster',
tvDealReached: true,
tvDealAmount: 55000,
tvDealEquity: .15,
tvDealValuation: 366667,
actualDealReached: true,
season: 4,
episode: 6
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Tower Paddle Boards',
tvDealReached: true,
tvDealAmount: 150000,
tvDealEquity: .3,
tvDealValuation: 500000,
actualDealReached: true,
season: 3,
episode: 9
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Bantam Bagels',
tvDealReached: true,
tvDealAmount: 275000,
tvDealEquity: .25,
tvDealValuation: 1100000,
actualDealReached: true,
season: 6,
episode: 13
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
mongoose.connection.close(function (data) {
//if (cb) cb();
});
})
60 changes: 60 additions & 0 deletions dustin/model/db_seeds/shark_seeds.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
'use strict';

const mongoose = require('mongoose');
const Shark = require('../../schema/sharks');


process.env.NODE_ENV='DEV'
if (process.env.NODE_ENV === 'TEST') mongoose.connect('mongodb://localhost/test_db');
if (process.env.NODE_ENV === 'DEV') mongoose.connect('mongodb://localhost/dev_db');

mongoose.connection.collections['sharks'].drop(function () {
console.log('collection dropped');

new Shark({
name: 'Kevin O\'Leary'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Barbara Corcoran'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Daymond John'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Robert Herjavec'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Lori Greiner'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Mark Cuban'
}).save((err, data) => {
if (err) console.log(err);
if (data) {
console.log('Shark ' + data.name + ' created');
mongoose.connection.close(function (data) {
//if (cb) cb();
});
}
});
});
8 changes: 8 additions & 0 deletions dustin/model/shark.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';
const mongoose = require('mongoose');

const Shark = new mongoose.Schema({
name: String,
});

module.exports = mongoose.model('sharks', Shark);
26 changes: 26 additions & 0 deletions dustin/model/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';

const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const secret = process.env.SECRET || 'changeme'


const User = new mongoose.Schema({
username: {type: String, required: true},
password: {type: String, required: true}
});

User.methods.hashPassword = function() {
return bcrypt.hashSync(this.password, 8);
};

User.methods.generateToken = function () {
return jwt.sign({_id: this._id}, secret)
}

User.methods.comparePassword = function(password) {
return bcrypt.compareSync(password, this.password);
};

module.exports = mongoose.model('user', User);
34 changes: 34 additions & 0 deletions dustin/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "SharkTankAPI",
"version": "0.0.1",
"description": "",
"main": "server.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"chai": "^3.5.0",
"chai-http": "^2.0.1",
"gulp": "^3.9.1",
"gulp-eslint": "^2.0.0",
"gulp-mocha": "^2.2.0",
"mocha": "^2.4.5",
"morgan": "^1.7.0",
"really-need": "^1.9.2"
},
"dependencies": {
"bcrypt": "^0.8.6",
"body-parser": "^1.15.1",
"express": "^4.13.4",
"json-fs-store": "^1.0.0",
"jsonwebtoken": "^7.0.0",
"mongoose": "^4.4.19"
}
}
Loading