-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsetup.js
134 lines (117 loc) · 4.73 KB
/
setup.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
133
134
var dotenv = require('dotenv').load({silent: true}),
prompt = require('prompt'),
request = require('request'),
util = require('util'),
prettyjson = require('prettyjson');
if (dotenv == false){
var dashButton, baseURL, partnerToken, userToken, userid, addressid, creditcardid, lon, lat, storeid;
console.log('DrizlyDash Setup Script\nIf you haven\'t already created a Drizly account specific for your Partner Token, run `node accountCreation.js`\nand signup and fill in your default address and credit card.\n');
prompt.message = 'DrizlyDash'.red;
prompt.delimiter = ">".cyan;
prompt.start();
// Login
prompt.get([{
name: 'dash',
description: 'Enter the Dash Button MAC',
required: true
}, {
name: 'url',
description: 'Enter the Drizly API URL',
required: true
}, {
name: 'partner',
description: 'Enter your Drizly API Partner Token',
required: true
}, {
name: 'email',
description: 'Enter your Drizly email',
required: true
}, {
name: 'password',
description: 'Enter your Drizly password',
hidden: true,
conform: function (value) {
return true;
}
}], function (err, result) {
console.log('Command-line input received:');
console.log(' dash button: ' + result.dash);
console.log(' base url: ' + result.url);
console.log(' email: ' + result.email);
console.log(' password: ********');
dashButton = result.dash;
baseURL = result.url;
partnerToken = result.partner;
var endpoint = baseURL + '/user/authenticate';
var formData = {
partner_token: partnerToken,
email: result.email,
password: result.password
};
request.post({url: endpoint, formData: formData}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('\nLogin failed:', err);
}
var jsonBody = JSON.parse(body),
jsonOptions = {
keysColor: 'magenta',
dashColor: 'red',
stringColor: 'white',
numberColor: 'green'
};
console.log('\nLogin successful! Server responded with: \n', prettyjson.render(jsonBody, jsonOptions));
userToken = jsonBody.token.token;
userid = jsonBody.token.user_id;
addressid = jsonBody.user.default_delivery_address.address_id;
creditcardid = jsonBody.user.default_saved_credit_card.saved_credit_card_id;
// Find Closest Store
lat = jsonBody.user.default_delivery_address.latitude;
lon = jsonBody.user.default_delivery_address.longitude;
endpoint = baseURL + '/store/resolve?partner_token=' + partnerToken + '&token=' + userToken + '&latitude=' + lat + '&longitude=' + lon;
request(endpoint, function (err, response, body) {
if (err) {
return console.error('\nStore Lookup failed:', err);
}
jsonBody = JSON.parse(body);
console.log('\nStore lookup successful! Server responded with: \n', prettyjson.render(jsonBody.stores[0], jsonOptions));
storeid = jsonBody.stores[0].id;
var fs = require('fs');
var data = 'DASH_MAC_ADDRESS='+dashButton+'\nURL='+baseURL+'\nPARTNER_TOKEN='+partnerToken+'\nTOKEN='+userToken+'\nUSER_ID='+userid+'\nADDRESS_ID='+addressid+'\nCREDIT_CARD_ID='+creditcardid+'\nLATITUDE='+lat+'\nLONGITUDE='+lon+'\nSTORE_ID='+storeid;
fs.writeFile('.env', data, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!\nPlease rerun this script to query the Drizly Database for your closest store.");
});
});
});
});
function onErr(err) {
console.log(err);
return 1;
}
} else {
console.log('DrizlyDash Setup Script\nIf you are looking for the .env file setup, please execute:\nrm .env\nand restart this script.\nOtherwise you are about to query Store: ' + process.env.STORE_ID);
prompt.message = 'DrizlyDash'.red;
prompt.delimiter = ">".green;
prompt.start();
// Login
prompt.get([{
name:'query',
description: 'Enter your alcohol query'
}], function (err, result) {
console.log('Command-line input received:');
console.log(' query: ' + result.query);
var endpoint = process.env.URL + '/catalog/filter?partner_token=' + process.env.PARTNER_TOKEN + '&token=' + process.env.TOKEN + '&per_page=100&store_id=' + process.env.STORE_ID + '&q=' + result.query;
request(endpoint, function (err, response, body) {
if (err) {
return console.error('\nQuery failed:', err);
}
console.log('\nQuery successful! Server responded with: \n', util.inspect(JSON.parse(body).catalog_items, false, null));
});
});
function onErr(err) {
console.log(err);
return 1;
}
}