mirror of
https://github.com/gchq/CyberChef
synced 2024-11-16 17:37:56 +00:00
Add getDishTitle function
This commit is contained in:
parent
f497dc3170
commit
6ee76e3bf0
5 changed files with 102 additions and 3 deletions
|
@ -168,6 +168,18 @@ class Chef {
|
||||||
return await newDish.get(type);
|
return await newDish.get(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the title of a dish and returns it
|
||||||
|
*
|
||||||
|
* @param {Dish} dish
|
||||||
|
* @param {number} [maxLength=100]
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
async getDishTitle(dish, maxLength=100) {
|
||||||
|
const newDish = new Dish(dish);
|
||||||
|
return await newDish.getTitle(maxLength);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Chef;
|
export default Chef;
|
||||||
|
|
|
@ -68,6 +68,9 @@ self.addEventListener("message", function(e) {
|
||||||
case "getDishAs":
|
case "getDishAs":
|
||||||
getDishAs(r.data);
|
getDishAs(r.data);
|
||||||
break;
|
break;
|
||||||
|
case "getDishTitle":
|
||||||
|
getDishTitle(r.data);
|
||||||
|
break;
|
||||||
case "docURL":
|
case "docURL":
|
||||||
// Used to set the URL of the current document so that scripts can be
|
// Used to set the URL of the current document so that scripts can be
|
||||||
// imported into an inline worker.
|
// imported into an inline worker.
|
||||||
|
@ -158,6 +161,26 @@ async function getDishAs(data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the dish title
|
||||||
|
*
|
||||||
|
* @param {object} data
|
||||||
|
* @param {Dish} data.dish
|
||||||
|
* @param {number} data.maxLength
|
||||||
|
* @param {number} data.id
|
||||||
|
*/
|
||||||
|
async function getDishTitle(data) {
|
||||||
|
const title = await self.chef.getDishTitle(data.dish, data.maxLength);
|
||||||
|
self.postMessage({
|
||||||
|
action: "dishReturned",
|
||||||
|
data: {
|
||||||
|
value: title,
|
||||||
|
id: data.id
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates highlight offsets if possible.
|
* Calculates highlight offsets if possible.
|
||||||
*
|
*
|
||||||
|
|
|
@ -141,6 +141,32 @@ class Dish {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the title of the data up to the specified length
|
||||||
|
*
|
||||||
|
* @param {number} maxLength - The maximum title length
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
async getTitle(maxLength) {
|
||||||
|
let title = "";
|
||||||
|
|
||||||
|
// LIST OF FILES - Say e.g. "3 files"
|
||||||
|
switch (this.type) {
|
||||||
|
case Dish.FILE:
|
||||||
|
title = this.value.name;
|
||||||
|
break;
|
||||||
|
case Dish.LIST_FILE:
|
||||||
|
title = `${this.value.length} file(s)`;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
title = await this.get("string");
|
||||||
|
}
|
||||||
|
|
||||||
|
title = title.slice(0, maxLength);
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Translates the data to the given type format.
|
* Translates the data to the given type format.
|
||||||
*
|
*
|
||||||
|
|
|
@ -442,7 +442,6 @@ class OutputWaiter {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the dish as an ArrayBuffer, returning the cached version if possible.
|
* Retrieves the dish as an ArrayBuffer, returning the cached version if possible.
|
||||||
*
|
*
|
||||||
|
@ -457,6 +456,21 @@ class OutputWaiter {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the title of the Dish as a string
|
||||||
|
*
|
||||||
|
* @param {Dish} dish
|
||||||
|
* @param {number} maxLength
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
async getDishTitle(dish, maxLength) {
|
||||||
|
return await new Promise(resolve => {
|
||||||
|
this.manager.worker.getDishTitle(dish, maxLength, r=> {
|
||||||
|
resolve(r.value);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save bombe object then remove it from the DOM so that it does not cause performance issues.
|
* Save bombe object then remove it from the DOM so that it does not cause performance issues.
|
||||||
*/
|
*/
|
||||||
|
@ -970,10 +984,9 @@ class OutputWaiter {
|
||||||
let tabStr = "";
|
let tabStr = "";
|
||||||
|
|
||||||
if (dish !== null) {
|
if (dish !== null) {
|
||||||
tabStr = await this.getDishStr(this.getOutputDish(inputNum));
|
tabStr = await this.getDishTitle(this.getOutputDish(inputNum), 100);
|
||||||
tabStr = tabStr.replace(/[\n\r]/g, "");
|
tabStr = tabStr.replace(/[\n\r]/g, "");
|
||||||
}
|
}
|
||||||
tabStr = tabStr.slice(0, 200);
|
|
||||||
this.manager.tabs.updateOutputTabHeader(inputNum, tabStr);
|
this.manager.tabs.updateOutputTabHeader(inputNum, tabStr);
|
||||||
if (this.manager.worker.recipeConfig !== undefined) {
|
if (this.manager.worker.recipeConfig !== undefined) {
|
||||||
this.manager.tabs.updateOutputTabProgress(inputNum, this.outputs[inputNum].progress, this.manager.worker.recipeConfig.length);
|
this.manager.tabs.updateOutputTabProgress(inputNum, this.outputs[inputNum].progress, this.manager.worker.recipeConfig.length);
|
||||||
|
|
|
@ -631,6 +631,31 @@ class WorkerWaiter {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asks the ChefWorker to get the title of the dish
|
||||||
|
*
|
||||||
|
* @param {Dish} dish
|
||||||
|
* @param {number} maxLength
|
||||||
|
* @param {Function} callback
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
getDishTitle(dish, maxLength, callback) {
|
||||||
|
const id = this.callbackID++;
|
||||||
|
|
||||||
|
this.callbacks[id] = callback;
|
||||||
|
|
||||||
|
if (this.dishWorker === null) this.setupDishWorker();
|
||||||
|
|
||||||
|
this.dishWorker.postMessage({
|
||||||
|
action: "getDishTitle",
|
||||||
|
data: {
|
||||||
|
dish: dish,
|
||||||
|
maxLength: maxLength,
|
||||||
|
id: id
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the console log level in the workers.
|
* Sets the console log level in the workers.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue