mirror of
https://github.com/tubearchivist/tubearchivist
synced 2024-11-08 07:10:28 +00:00
95 lines
2.3 KiB
JavaScript
95 lines
2.3 KiB
JavaScript
|
/*
|
||
|
extension background script listening for events
|
||
|
*/
|
||
|
|
||
|
console.log("running background.js");
|
||
|
|
||
|
let browserType = getBrowser();
|
||
|
|
||
|
|
||
|
// boilerplate to dedect browser type api
|
||
|
function getBrowser() {
|
||
|
if (typeof chrome !== "undefined") {
|
||
|
if (typeof browser !== "undefined") {
|
||
|
console.log("detected firefox");
|
||
|
return browser;
|
||
|
} else {
|
||
|
console.log("detected chrome");
|
||
|
return chrome;
|
||
|
}
|
||
|
} else {
|
||
|
console.log("failed to dedect browser");
|
||
|
throw "browser detection error"
|
||
|
};
|
||
|
}
|
||
|
|
||
|
|
||
|
// send post request to API backend
|
||
|
async function sendPayload(url, token, payload) {
|
||
|
|
||
|
const rawResponse = await fetch(url, {
|
||
|
method: "POST",
|
||
|
headers: {
|
||
|
"Accept": "application/json",
|
||
|
"Content-Type": "application/json",
|
||
|
"Authorization": token,
|
||
|
"mode": "no-cors"
|
||
|
},
|
||
|
body: JSON.stringify(payload)
|
||
|
});
|
||
|
|
||
|
const content = await rawResponse.json();
|
||
|
return content;
|
||
|
}
|
||
|
|
||
|
|
||
|
// read access storage and send
|
||
|
function forwardRequest(payload) {
|
||
|
|
||
|
console.log("running forwardRequest");
|
||
|
|
||
|
function onGot(item) {
|
||
|
console.log(item.access);
|
||
|
|
||
|
const url = `${item.access.url}:${item.access.port}/api/download/`;
|
||
|
console.log(`sending to ${url}`);
|
||
|
const token = `Token ${item.access.apiKey}`;
|
||
|
|
||
|
sendPayload(url, token, payload).then(content => {
|
||
|
console.log(content);
|
||
|
})
|
||
|
|
||
|
};
|
||
|
|
||
|
function onError(error) {
|
||
|
console.local("failed to get access details");
|
||
|
console.log(`Error: ${error}`);
|
||
|
};
|
||
|
|
||
|
browserType.storage.local.get("access", function(result) {
|
||
|
onGot(result)
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
// listen for messages
|
||
|
browserType.runtime.onMessage.addListener(
|
||
|
function(request, sender, sendResponse) {
|
||
|
console.log("responding from background.js listener");
|
||
|
console.log(JSON.stringify(request));
|
||
|
if (request.download) {
|
||
|
console.log("found new download task");
|
||
|
let payload = {
|
||
|
"data": [
|
||
|
{
|
||
|
"youtube_id": request.download["videoId"],
|
||
|
"status": "pending",
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
forwardRequest(payload);
|
||
|
};
|
||
|
}
|
||
|
);
|