Skip to content

Instantly share code, notes, and snippets.

@mitchross
Last active May 7, 2016 02:42
Show Gist options
  • Save mitchross/1d049f8de1a3eeed40951cf3b39e3c17 to your computer and use it in GitHub Desktop.
Save mitchross/1d049f8de1a3eeed40951cf3b39e3c17 to your computer and use it in GitHub Desktop.
var express = require ('express');
var cors = require('cors');
var app = express();
var mongoose = require ('mongoose');
var morgan = require('morgan'); // log requests to the console (express4)
var bodyParser = require('body-parser'); // pull information from HTML POST (express4)
var methodOverride = require('method-override');
var xml2js = require('xml2js');
var https = require('https');
var request = require('request');
var et = require("elementtree");
//Could use mongolab endpoint, demo is limited to local host
//mongoose.connect('mongodb://localhost/searchesTest');
mongoose.connect('mongodb://vanillax:temp15@ds037262.mongolab.com:37262/tvbc_logger/Searches');
app.use( cors() );
app.use(express.static( 'public'));
app.set('views', "public/" );
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json'}));
app.use(methodOverride());
var port = Number(process.env.PORT || 3000);
app.listen(port);
console.log("App listening on port:" + port);
//Model Object
var SearchTerm = mongoose.model('SearchTerm' , {
text : String
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods: GET, POST , DELETE");
next();
});
app.get('/', function(req,res){
res.render('index.html');
});
//Routes
app.get('/api/searchterms', function( req , res ){
SearchTerm.find(function(err , searchTerms){
if (err )
{
res.send(err)
}
res.json(searchTerms);
});
});
function parseXML( data) {
//do something
console.log( "made it to parse xml");
return data;
}
app.get('/api/getiosreviews', function( req , res ){
var newUrl = 'https://itunes.apple.com/rss/customerreviews/id=583093664/sortBy=mostRecent/xml';
var xmlReq = https.get(newUrl, function (response) {
var completeResponse = '';
response.on('data', function (chunk) {
completeResponse += chunk;
});
response.on('end', function() {
console.log(completeResponse);
return parseXML( completeResponse )
})
}).on('error', function (e) {
console.log('problem with request: ' + e.message);
});
});
app.post('/api/searchterms', function(req , res) {
SearchTerm.create({
text: req.body.text,
done: false
}, function(err, searchTerm){
if ( err )
{
res.send(err)
}
res.json( searchTerm )
});
});
app.delete('/api/searchterms/:searchterm_id' , function ( req , res ) {
SearchTerm.remove(
{
_id : req.params.searchterm_id
},
function(err, searchTerm)
{
if ( err )
{
res.send(err);
}
SearchTerm.find( function(err, searchTerms) {
if ( err )
{
res.send(err)
}
res.json( searchTerms );
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment