-
Notifications
You must be signed in to change notification settings - Fork 1
/
webserver.js
54 lines (46 loc) · 2.5 KB
/
webserver.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
const express = require('express');
const { CardsavrHelper } = require("@strivve/strivve-sdk/lib/cardsavr/CardsavrHelper");
const app = express();
const port = process.env.PORT || 3000;
app.get("/create_user", function (req, res) {
const cardholder_data = getFromEnv(getFromEnv(require("./cardholder.json"), process.env), req.query);
const address_data = getFromEnv(getFromEnv(require("./address.json"), process.env), req.query);
const card_data = getFromEnv(getFromEnv(require("./card.json"), process.env), req.query);
(async() => {
let cu = cardsavr_server.replace("cardsavr.io", "cardupdatr.app").replace("//api.", "//") + "/select-merchants";
if (req.query.rd) {
cu = req.query.rd;
}
try {
const ch = CardsavrHelper.getInstance();
//Setup the settings for the application
ch.setAppSettings(cardsavr_server, app_name, app_key, false, null, process.env.HTTP_PROXY);
//Create a session for the application user (cardholder agent)
if (await ch.loginAndCreateSession(app_username, app_password)) {
//Save the card on a behalf of a temporary cardholder - return their username, grant, card par
card_data.address = address_data;
card_data.cardholder = cardholder_data;
const card_response = await ch.createCard({agent_username: app_username, card: card_data});
const handoff = { grant : card_response.cardholder.grant, card_id : card_response.id };
const queryString = Object.keys(handoff).map(key => key + "=" + encodeURIComponent(handoff[key])).join("&");
res.redirect(cu + "#" + queryString);
}
} catch (err) {
console.log(err);
console.log(err.body._errors);
}
})();
});
const static_dir = process.env.npm_package_config_static_dir || "../dist";
app.use(express.static(static_dir));
app.listen(port, () => console.log(`CardUpdatr Demo app listening at ${port}`));
const config = require("./strivve_creds.json");
const instance = config.instance;
const {app_name, app_key, app_username, app_password, cardsavr_server } =
getFromEnv(instance && config.instances ?
config.instances.find(item => (item.instance == instance)) :
config,
process.env);
function getFromEnv(top_config, env) {
return Object.fromEntries(Object.entries(top_config).map(([key, value]) => env[key] ? [key, env[key]] : [key, value]));
}