Skip to content

Commit 7b8cc26

Browse files
committed
WIP
1 parent 640a11e commit 7b8cc26

File tree

4 files changed

+139
-0
lines changed

4 files changed

+139
-0
lines changed

src/cdk/v2/destinations/accoil_analytics/config.js

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
bindings:
2+
- name: EventType
3+
path: ../../../../constants
4+
- path: ../../bindings/jsontemplate
5+
exportAll: true
6+
- name: removeUndefinedAndNullValues
7+
path: ../../../../v0/util
8+
- path: ./utils
9+
10+
steps:
11+
- name: validateInput
12+
template: |
13+
$.assert(.message.type, "message Type is not present. Aborting message.");
14+
$.assert(.message.type in {{$.EventType.([.TRACK, .PAGE, .SCREEN, .IDENTIFY, .GROUP])}},
15+
"message type " + .message.type + " is not supported");
16+
17+
- name: prepareContext
18+
template: |
19+
$.context.messageType = .message.type.toLowerCase();
20+
$.context.payload = {
21+
"type": $.context.messageType
22+
};
23+
$.context.finalHeaders = {
24+
"authorization": "Basic " + .destination.Config.apiKey,
25+
"content-type": "application/json"
26+
};
27+
$.context.endpoint = $.endpointUrl(.destination.Config.apiKey);
28+
29+
- name: trackPayload
30+
condition: $.context.messageType == "track"
31+
template: |
32+
$.context.payload.event = .message.event;
33+
$.context.payload.userId = .message.userId;
34+
$.context.payload.timestamp = .message.timestamp;
35+
36+
- name: pagePayload
37+
condition: $.context.messageType == "page"
38+
template: |
39+
$.context.payload.userId = .message.userId;
40+
$.context.payload.name = .message.event;
41+
$.context.payload.timestamp = .message.timestamp;
42+
43+
- name: screenPayload
44+
condition: $.context.messageType == "screen"
45+
template: |
46+
$.context.payload.userId = .message.userId;
47+
$.context.payload.name = .message.event;
48+
$.context.payload.timestamp = .message.timestamp;
49+
50+
- name: identifyPayload
51+
condition: $.context.messageType == "identify"
52+
template: |
53+
$.context.payload.userId = .message.userId;
54+
$.context.payload.traits = .message.traits ?? .message.context.traits;
55+
# $.context.payload.traits.email = .message.traits.email;
56+
# $.context.payload.traits.name = .message.traits.name;
57+
# $.context.payload.traits.role = .message.traits.role;
58+
# $.context.payload.traits.createdAt = .message.traits.createdAt;
59+
# $.context.payload.traits.accountStatus = .message.traits.accountStatus;
60+
61+
- name: groupPayload
62+
condition: $.context.messageType == "group"
63+
template: |
64+
$.context.payload.anonymousId = .message.anonymousId;
65+
$.context.payload.userId = .message.userId;
66+
$.context.payload.groupId = .message.groupId;
67+
$.context.payload.name = .message.event;
68+
$.context.payload.timestamp = .message.timestamp;
69+
$.context.payload.traits = .message.traits ?? .message.context.traits;
70+
# $.context.payload.traits.name = .message.traits.name;
71+
# $.context.payload.traits.createdAt = .message.traits.createdAt;
72+
# $.context.payload.traits.status = .message.traits.status;
73+
# $.context.payload.traits.plan = .message.traits.plan;
74+
# $.context.payload.traits.mrr = .message.traits.mrr;
75+
76+
- name: validateTimestamp
77+
template: |
78+
$.assert($.context.payload.timestamp, "timestamp is required for all calls")
79+
80+
- name: validateTrackPayload
81+
condition: $.context.messageType == "track"
82+
template: |
83+
$.assert($.context.payload.event, "event is required for track call")
84+
$.assert($.context.payload.userId, "userId is required for track call")
85+
86+
- name: validatePagePayload
87+
condition: $.context.messageType == "page"
88+
template: |
89+
$.assert($.context.payload.userId, "userId is required for page call")
90+
91+
- name: validateScreenPayload
92+
condition: $.context.messageType == "screen"
93+
template: |
94+
$.assert($.context.payload.userId, "userId is required for screen call")
95+
$.assert($.context.payload.timestamp, "timestamp is required for screen call")
96+
97+
- name: validateIdentifyPayload
98+
condition: $.context.messageType == "identify"
99+
template: |
100+
$.assert($.context.payload.userId, "userId is required for track call")
101+
$.assert($.context.payload.timestamp, "timestamp is required for screen call")
102+
103+
- name: validateGroupyPayload
104+
condition: $.context.messageType == "group"
105+
template: |
106+
$.assert($.context.payload.userId, "userId is required for track call")
107+
$.assert($.context.payload.timestamp, "timestamp is required for screen call")
108+
109+
- name: cleanPayload
110+
template: |
111+
$.context.payload = $.removeUndefinedAndNullValues($.context.payload);
112+
113+
- name: buildResponseForProcessTransformation
114+
template: |
115+
$.context.payload.({
116+
"body": {
117+
"JSON": .,
118+
"JSON_ARRAY": {},
119+
"XML": {},
120+
"FORM": {}
121+
},
122+
"version": "1",
123+
"type": "REST",
124+
"method": "POST",
125+
"endpoint": $.context.endpoint,
126+
"headers": $.context.finalHeaders,
127+
"params": {},
128+
"files": {}
129+
})

src/cdk/v2/destinations/accoil_analytics/rtWorkflow.yaml

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const stgRegex = new RegExp(/^stg_/, 'i');
2+
3+
const endpointUrl = (apiKey) => {
4+
const staging = stgRegex.test(apiKey);
5+
return staging ? 'https://instaging.accoil.com/segment' : 'https://in.accoil.com/segment';
6+
};
7+
8+
module.exports = {
9+
endpointUrl,
10+
};

0 commit comments

Comments
 (0)