-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
132 lines (119 loc) · 4.99 KB
/
app.js
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
let express = require("express");
let req = require('request');
let async = require('async');
let bodyParser = require('body-parser');
let app = express();
let ejs = require('ejs');
app.set('view engine', 'ejs');
// app.use(express.static(__dirname + '/views'));
app.use('/assets', express.static('static'));
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json())
app.get('/', function (request, response) {
if (request.query.apitoken && request.query.projectid) {
let baseurl = 'https://www.geodesignhub.com/api/v1/projects/';
// let baseurl = 'http://local.test:8000/api/v1/projects/';
let apikey = request.query.apitoken;
let projectid = request.query.projectid;
let cred = "Token " + apikey;
let systems = baseurl + projectid + '/systems/';
let diagrams = baseurl + projectid + '/diagrams/';
let design_teams = baseurl + projectid + '/cteams/';
let members = baseurl + projectid + '/members/';
let all_synthesis = [];
let URLS = [systems, diagrams, design_teams, members];
async.map(URLS, function (url, done) {
req({
url: url,
headers: {
"Authorization": cred,
"Content-Type": "application/json"
}
}, function (err, response, body) {
if (err || response.statusCode !== 200) {
return done(err || new Error());
}
return done(null, JSON.parse(body));
});
}, function (err, results) {
if (err) return response.sendStatus(500);
// get the design_teams
systems = results[0];
diagrams = results[1];
design_teams = results[2];
members = results[3];
let design_team_length = design_teams.length;
let ctURLS = [];
for (let x = 0; x < design_team_length; x++) {
let ctid = design_teams[x]['id'];
let cturl = baseurl + projectid + '/cteams/' + ctid + '/';
ctURLS.push(cturl);
}
async.map(ctURLS, function (url, done) {
req({
url: url,
headers: {
"Authorization": cred,
"Content-Type": "application/json"
}
}, function (err, response, body) {
if (err || response.statusCode !== 200) {
return done(err || new Error());
}
return done(null, JSON.parse(body));
});
}, function (err, results) {
if (err) return response.sendStatus(500);
let result_length = results.length;
let synURLs = [];
for (let k = 0; k < result_length; k++) {
let synList = results[k]['synthesis'];
let synthesis_length = synList.length;
for (let y = 0; y < synthesis_length; y++) {
let current_synthesis = synList[y];
all_synthesis.push(current_synthesis);
let cteamid = current_synthesis['cteamid'];
let synthesis_id = current_synthesis['id']
let cturl = baseurl + projectid + '/cteams/' + cteamid + '/' + synthesis_id + '/diagrams/';
synURLs.push(cturl);
}
}
async.map(synURLs, function (url, done) {
req({
url: url,
headers: {
"Authorization": cred,
"Content-Type": "application/json"
}
}, function (err, response, body) {
if (err || response.statusCode !== 200) {
return done(err || new Error());
}
return done(null, JSON.parse(body));
});
}, function (err, results) {
if (err) return response.sendStatus(500);
let opts = {
"apitoken": request.query.apitoken,
"projectid": request.query.projectid,
"projectdata":JSON.stringify({
"status": 1,
"syndiagrams": results,
"diagrams": diagrams,
"systems": systems,
"cteams": design_teams,
"syns": all_synthesis,
"members": members})
}
response.render('gdhdna', opts);
});
});
});
}
else {
response.status(400).send('Not all query parameters provided.');
}
});
app.listen(process.env.PORT || 5001);