forked from ingestly/ingestly-chrome-extension
-
Notifications
You must be signed in to change notification settings - Fork 3
/
background.js
41 lines (39 loc) · 1.51 KB
/
background.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
function decodeTdBeacon(raw) {
decoded = decodeURIComponent(escape(atob(raw)));
return JSON.parse(decoded);
}
chrome.webRequest.onBeforeRequest.addListener(
(details) => {
chrome.tabs.query({
active: true,
windowId: chrome.windows.WINDOW_ID_CURRENT
}, (result) => {
var currentTab = result.shift();
if (details.url.match(/\/event\/.*?\?api_key=.*?&data=.*&callback.*/)) {
var parser = new URL(details.url);
var pathItems = parser.pathname.split('/');
var response = {
'(protocol)': parser.protocol,
'(endpoint)':parser.hostname,
'(sdk)':pathItems[1],
'(database)':pathItems[4],
'(table)':pathItems[5],
'(apiKey)':parser.searchParams.get("api_key"),
'(modified)':parser.searchParams.get("modified"),
'(callback)':parser.searchParams.get("callback")
};
var data = decodeTdBeacon(parser.searchParams.get("data"));
for (var key in data) {
if(typeof data[key] === 'object'){
response[key] = JSON.stringify(data[key]);
}else{
response[key] = data[key];
}
}
chrome.tabs.sendMessage(currentTab.id, response);
}
});
},
{urls: ['<all_urls>']},
[]
);