Created
May 13, 2013 02:14
-
-
Save SamSamskies/5565796 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express') | |
, http = require('http') | |
, path = require('path') | |
, fs = require('fs') | |
, pg = require('pg') | |
, orm = require('orm') | |
, routes = require('./routes') | |
, discover = require('./routes/discover') | |
, campgrounds = require('./routes/campgrounds') | |
, checkout = require('./routes/checkout') | |
, explore = require('./routes/explore'); | |
// creates a new application instance of express | |
var app = express(); | |
// setting up env variables (things we set we can get). we use process.env so that things will work on Heroku | |
app.set('port', process.env.PORT || 3000); | |
app.set('views', __dirname + '/views'); | |
app.set('view engine', 'jade'); | |
app.set('dbConnection', process.env.DATABASE_URL || "postgres://webuser:breathe@localhost/hipcamp") | |
app.use(express.favicon()); | |
app.use(express.logger('dev')); | |
app.use(express.bodyParser()); | |
app.use(express.methodOverride()); | |
app.use(express.static(path.join(__dirname, 'public'))); | |
// makes connecton to database using node-orm2 as middleware | |
app.use(orm.express(app.get('dbConnection'), { | |
define: function (db, models){ | |
models.campgrounds = db.define("campgrounds", { | |
name : String, | |
lat : Number, | |
lng : Number | |
}); | |
models.ca_cities = db.define("ca_cities", { | |
name : String, | |
lat : Number, | |
lng : Number | |
}); | |
db.sync(); // updates db schema when server is restarted & pgsql server is running | |
}, // closes 'define' | |
})); // closes app.use | |
// putting this under ORM, per dox | |
app.use(app.router); | |
// development only | |
if ('development' == app.get('env')) { | |
app.use(express.errorHandler()); | |
} | |
// routes | |
app.get('/', routes.index); | |
app.get('/explore', explore.explore); | |
app.post('/discover', discover.getCampgrounds); | |
app.get('/:campground/:campgroundID', campgrounds.getCampgroundDetails); | |
app.get('/:campground/checkout', checkout.charge); | |
app.get("/geocodeCities", function (req, res) { | |
// req.models is a reference to models used above in define() | |
(function() { | |
var readline = require('readline'); | |
var rd = readline.createInterface({ | |
input: fs.createReadStream('caCities'), | |
output: process.stdout, | |
terminal: false | |
}); | |
rd.on('line', function(line) { | |
var name = line.replace(" ", "+"); | |
var reqUri = "http://maps.googleapis.com/maps/api/geocode/json?address=" + name + ",+CA&sensor=false"; | |
http.get(reqUri, function(res) { | |
var data = ''; | |
res.on('data', function(chunk){ | |
data += chunk; | |
}); | |
res.on('end', function(){ | |
var dataObj = JSON.parse(data); | |
var latlng = dataObj.results[0].geometry.location; | |
var lat = latlng.lat; | |
var lng = latlng.lng; | |
req.models.ca_cities.create([ | |
{ name: line.trim(), | |
lat: lat, | |
lng: lng | |
} | |
], function (err, items) { | |
if(err) console.log(err); | |
console.log("cities: " +items); | |
} | |
); | |
} // res.on('end') | |
).on('error', function(e){ | |
console.log('uhoh!! ERROR: ' + e.message); | |
}); // res.on('error') | |
}); // http | |
}); // res.on('line') | |
})(); // readCities | |
}); | |
// create server | |
http.createServer(app).listen(app.get('port'), function(){ | |
console.log('holla on port ' + app.get('port')); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment