Skip to content

Commit 6ddbb4f

Browse files
committed
modified: index.js
modified: routes/currency-exchange-routes.js modified: routes/weatherbit-routes.js new file: views/pages/utils.ejs
1 parent 807e936 commit 6ddbb4f

File tree

4 files changed

+120
-13
lines changed

4 files changed

+120
-13
lines changed

index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import express from 'express';
44
import bodyParser from 'body-parser';
55
import {encryptAES, decryptAES} from './crypto.js';
66

7+
// dev env
8+
dotenv.config();
9+
10+
// Create network routing
11+
const app = express();
712

813
// application secrets
914
import { keys } from './config/keys.js';
@@ -17,11 +22,6 @@ import { router as weatherbitRoutes } from './routes/weatherbit-routes.js';
1722
// routes handler for OAuth20 methods
1823
import { router as oauth20Routes } from './routes/auth-routes.js';
1924

20-
// dev env
21-
dotenv.config();
22-
23-
// Create network routing
24-
const app = express();
2525

2626
// EJS is accessed by default in the views directory.
2727
app.set('view engine', 'ejs');

routes/currency-exchange-routes.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
import { data as currencyCodes } from 'currency-codes';
22
import request from 'request';
33
import express from 'express';
4+
45
import { keys } from '../config/keys.js';
6+
7+
let EXCHANGE_RATE_APIKEY;
8+
let BASE_URI;
9+
let SAMPLE2_URI;
10+
if (process.env.NODE_ENV === "production") {
11+
EXCHANGE_RATE_APIKEY = process.env.EXCHANGE_RATE_APIKEY;
12+
BASE_URI = process.env.BASE_URI;
13+
SAMPLE2_URI = process.env.SAMPLE2_URI;
14+
} else {
15+
EXCHANGE_RATE_APIKEY = keys.exchangerateapi.APIKEY;
16+
BASE_URI = keys.exchangerateapi.URI;
17+
SAMPLE2_URI = keys.exchangerateapi.SAMPLE2_URI;
18+
}
19+
520
const router = express.Router();
621

722

@@ -32,13 +47,11 @@ router.post('/', (req, res) => {
3247
function getExchangeRateData(fromCurrency, toCurrency, amount) {
3348
return new Promise(resolve => {
3449
setTimeout(() => {
35-
let XchangeKey = process.env.EXCHANGE_RATE_APIKEY;
36-
let XchangeURI = process.env.BASE_URI;
37-
let URLStr = XchangeURI + XchangeKey + '/pair/' + fromCurrency + '/' + toCurrency + '/' + amount;
38-
50+
let URLStr = BASE_URI + EXCHANGE_RATE_APIKEY + '/pair/' + fromCurrency + '/' + toCurrency + '/' + amount;
51+
console.log(URLStr);
3952
try {
4053
if (fromCurrency === undefined) {
41-
URLStr = process.env.SAMPLE2_URI;
54+
URLStr = SAMPLE2_URI;
4255
}
4356
console.log("Calling URL: " + URLStr);
4457
request(URLStr, async function (err, response, body) {

routes/weatherbit-routes.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@ import request from 'request';
33
import { keys } from '../config/keys.js';
44
const router = express.Router();
55

6-
let WEATHERBIT_KEY = keys.weatherbitapi.APIKEY;
7-
let WEATHERBIT_URI = keys.weatherbitapi.URI;
8-
6+
let WEATHERBIT_KEY;
7+
let WEATHERBIT_URI;
98

9+
if (process.env.NODE_ENV === "production") {
10+
WEATHERBIT_KEY = process.env.WEATHERBIT_KEY;
11+
WEATHERBIT_URI = process.env.WEATHERBIT_URI;
12+
} else {
13+
WEATHERBIT_KEY = keys.weatherbitapi.APIKEY;
14+
WEATHERBIT_URI = keys.weatherbitapi.URI;
15+
}
1016

1117
router.get('/', (req, res) => {
1218
res.render('pages/weatherbit');

views/pages/utils.ejs

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<%
2+
const MOON = '🌙';
3+
const SUN = '☀️';
4+
// convert unix_timestamp to local datetime
5+
unixTsToLocalTime = (unix_ts) => {
6+
// Create a new JavaScript Date object based on the timestamp
7+
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
8+
var date = new Date(unix_ts * 1000);
9+
// Hours part from the timestamp
10+
var hours = date.getHours();
11+
// Minutes part from the timestamp
12+
var minutes = "0" + date.getMinutes();
13+
// Seconds part from the timestamp
14+
var seconds = "0" + date.getSeconds();
15+
// Will display time in 10:30:23 format
16+
return hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
17+
}
18+
trendingTemperature = (dataArr) => {
19+
var sum = 0;
20+
for (var item of dataArr) {
21+
sum += item.temp;
22+
}
23+
let average = sum / dataArr.length;
24+
let diff = average - dataArr[0].temp;
25+
if ( diff > 0 ) {
26+
if (diff <= 3){ return "Slight warming trend ahead."; }
27+
else if (diff > 3 && diff <= 10) { return "Moderate warming trend ahead."; }
28+
else { return "Considerable warming trend ahead."; }
29+
} else {
30+
if (diff >= -3){ return "Slight cooling trend ahead."; }
31+
else if (diff < -3 && diff <= -10) { return "Moderate cooling trend ahead."; }
32+
else { return "Considerable warming trend ahead."; }
33+
}
34+
}
35+
// check if client allows saving session data
36+
storageAvailable = (type) => {
37+
let storage;
38+
try {
39+
storage = window[type];
40+
const x = '__storage_test__';
41+
storage.setItem(x, x);
42+
storage.removeItem(x);
43+
return true;
44+
}
45+
catch (e) {
46+
return e instanceof DOMException && (
47+
// everything except Firefox
48+
e.code === 22 ||
49+
// Firefox
50+
e.code === 1014 ||
51+
// test name field too, because code might not be present
52+
// everything except Firefox
53+
e.name === 'QuotaExceededError' ||
54+
// Firefox
55+
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
56+
// acknowledge QuotaExceededError only if there's something already stored
57+
(storage && storage.length !== 0);
58+
}
59+
}
60+
// save data to session memory client-side
61+
saveClientData = (key, value) => {
62+
if (storageAvailable(String)) {
63+
// Yippee! We can use localStorage awesomeness
64+
// Save data to sessionStorage
65+
sessionStorage.setItem(key, value);
66+
// Get saved data from sessionStorage
67+
let data = sessionStorage.getItem(key);
68+
alert(methodString +' says my data is ' + data);
69+
}
70+
else {
71+
// Too bad, no localStorage for us
72+
alert(methodString + ' says Web Storage API is disabled.')
73+
}
74+
}
75+
// retrieve saved session data
76+
getClientData = (key) => {
77+
if (storageAvailable(String)) {
78+
return sessionStorage.getItem(key);
79+
} else {
80+
return null;
81+
}
82+
}
83+
// delete session data
84+
deleteClientData = (key) => {
85+
// Remove saved data from sessionStorage
86+
sessionStorage.removeItem(key);
87+
}
88+
%>

0 commit comments

Comments
 (0)