-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.js
94 lines (81 loc) · 2.13 KB
/
template.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
const sendHttpRequest = require('sendHttpRequest');
const JSON = require('JSON');
const getRequestHeader = require('getRequestHeader');
const encodeUriComponent = require('encodeUriComponent');
const logToConsole = require('logToConsole');
const getContainerVersion = require('getContainerVersion');
const makeString = require('makeString');
const makeTableMap = require('makeTableMap');
const containerVersion = getContainerVersion();
const isDebug = containerVersion.debugMode;
const isLoggingEnabled = determinateIsLoggingEnabled();
const traceId = getRequestHeader('trace-id');
const requestUrl = getRequestUrl();
const postBody = getPostBody();
if (isLoggingEnabled) {
logToConsole(
JSON.stringify({
Name: 'Salesforce',
Type: 'Request',
TraceId: traceId,
EventName: 'Lead',
RequestMethod: 'POST',
RequestUrl: requestUrl,
RequestBody: postBody
})
);
}
sendHttpRequest(
requestUrl,
(statusCode, headers, body) => {
if (isLoggingEnabled) {
logToConsole(
JSON.stringify({
Name: 'Salesforce',
Type: 'Response',
TraceId: traceId,
EventName: 'Lead',
ResponseStatusCode: statusCode,
ResponseHeaders: headers,
ResponseBody: body
})
);
}
if (statusCode >= 200 && statusCode < 303) {
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
},
{
headers: {
'Authorization': 'Bearer '+ data.accessToken,
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'POST'
},
JSON.stringify(postBody)
);
function getRequestUrl() {
return 'https://'+enc(data.instanceDomain)+'/services/data/v57.0/sobjects/Lead/';
}
function getPostBody() {
return makeTableMap(data.leadData || [], 'field', 'value') || {};
}
function enc(data) {
data = data || '';
return encodeUriComponent(makeString(data));
}
function determinateIsLoggingEnabled() {
if (!data.logType) {
return isDebug;
}
if (data.logType === 'no') {
return false;
}
if (data.logType === 'debug') {
return isDebug;
}
return data.logType === 'always';
}