forked from maratonadev/desafio-4-2019
-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.js
69 lines (67 loc) · 2.24 KB
/
action.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
/**
*
* main() será executado quando você chamar essa ação
*
* @param As ações do Cloud Functions aceitam um único parâmetro, que deve ser um objeto JSON.
*
* @return A saída dessa ação, que deve ser um objeto JSON.
*
*/
const request = require('request');
function main(params) {
const getToken = () => {
const options = {
url: "https://us-south.ml.cloud.ibm.com/v3/identity/token",
headers: {
"Content-Type": "application/json"
},
auth: {
// TODO: Substituir com USERNAME e PASSWORD do serviço de Watson Machine Learning
user: "<Username_Watson_Machine_Learning>",
pass: "<Password_Watson_Machine_Learning>"
},
json: true
};
return new Promise((resolve, reject) => {
request.get(options, (error, resp, body) => {
if (error) reject(error);
else {
resolve(body.token);
}
});
});
};
return new Promise((resolve, reject) => {
const body = {
fields: ["viagem", "bebida", "genero", "hobby"],
values: [[params.viagem, params.bebida, params.genero, params.hobby]]
};
getToken().then(token => {
const options = {
// TODO: Substituir com SCORING END-POINT do Deployment do Modeler flow
url: "<Scoring End-point_Modeler_Flow>",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
},
body: body,
json: true
};
request.post(options, (error, resp, data) => {
if (error) reject(error);
else if (data.errors) {
resolve({
"err": true,
"produto": data.errors[0].message
});
}
else {
resolve({
"err": false,
"produto": data.values[0][0]
});
}
});
}).catch(err => reject(err));
});
}