-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
141 lines (100 loc) · 4.23 KB
/
server.js
File metadata and controls
141 lines (100 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// server.js
// modules =================================================
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var mongoose = require('mongoose');
var path = require('path'); //needed for sendFile
//app libs:
var rsutils = require('./richtersales-utils');
// configuration ===========================================
// config files
var db = require('./config/db');
var dataSourceJson = 'https://eb269bfed4883478fcf75acac385014d:b4baf3405ca909e683fb80892511a914@jufa-development-shop.myshopify.com/admin/orders.json';
var productDataJson = 'https://eb269bfed4883478fcf75acac385014d:b4baf3405ca909e683fb80892511a914@jufa-development-shop.myshopify.com/admin/products/';
var mongolabUri = "mongodb://heroku_app32157115:6i4850couahu6vk5vhhj3oi9m8@ds031651.mongolab.com:31651/heroku_app32157115";
// set our port
var port = process.env.PORT || 8080;
//app.set('port', port);
// connect to our mongoDB database
//mongoose.connect('mongodb://localhost/richtersales'); //todo put this in config/db
mongoose.connect(mongolabUri); //todo put this in config/db
// get all data/stuff of the body (POST) parameters
// parse application/json
app.use(bodyParser.json());
// parse application/vnd.api+json as json
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// override with the X-HTTP-Method-Override header in the request. simulate DELETE/PUT
app.use(methodOverride('X-HTTP-Method-Override'));
//provide route middleware for robots.txt as per http://stackoverflow.com/questions/15119760
app.use(function (req, res, next) {
if ('/robots.txt' == req.url) {
res.type('text/plain');
res.send("User-agent: *\nDisallow: /");
} else {
next();
}
});
// set the static files location /public/img will be /img for users
app.use(express.static(__dirname + '/public'));
// routes ==================================================
require('./app/routes')(app); // configure our routes
//TO do: move these to routes:
// server routes ===========================================================
// handle things like api calls
// authentication routes
// frontend routes =========================================================
// route to handle all angular requests
// get an instance of router
var router = express.Router();
// home page route (http://localhost:8080)
// about page route (http://localhost:8080/about)
router.get('/api', function(req, res) {
res.send('Richtersales API root. <a href = "http://en.wikipedia.org/wiki/RSDL" >RSDL</a> ');
});
router.get('/api/sales', function(request, response) {
// get orders:
var orderUrl = dataSourceJson;
var orderObject = rsutils.retrieveOrders(request, response, orderUrl);
});
router.get('/api/product/:product_id', function(request, response) {
// get product details:
var productUrl = productDataJson + request.params.product_id + '.json';
var productDetails = rsutils.getProductDetails(request, response, productUrl);
});
router.get('/api/promotions', function(request, response) {
// get product details:
var promotions = rsutils.retrievePromos(request, response);
});
//new promotion added:
router.post('/api/promotions', function(request, response) {
// add promo:
rsutils.addPromo(request, response);
});
router.get('/api/**', function(req, res) {
res.send('Richtersales API root. <a href = "http://en.wikipedia.org/wiki/RSDL" >RSDL</a> ');
});
router.get('/robots.txt', function(req, res) {
res.send('');
});
router.get('/**', function(req, res) {
//res.sendfile('./public/index.html'); //deprecated: http://stackoverflow.com/questions/25463423
res.sendFile('index.html', { root: path.join(__dirname, './public') });
});
// apply the routes to our application
app.use('/', router);
/*
app.get('*', function(req, res) {
res.sendfile('./public/index.html');
});
*/
// start app ===============================================
// startup our app at http://localhost:8080
/*
*/
app.listen(port);
// expose app
exports = module.exports = app;