mirror of
https://github.com/gchq/CyberChef.git
synced 2026-03-21 06:32:47 +01:00
feat: add Raw option for Jq operation (#2237)
This commit is contained in:
@@ -30,7 +30,12 @@ class Jq extends Operation {
|
||||
name: "Query",
|
||||
type: "string",
|
||||
value: ""
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Raw",
|
||||
type: "boolean",
|
||||
value: false
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -40,7 +45,7 @@ class Jq extends Operation {
|
||||
* @returns {string}
|
||||
*/
|
||||
run(input, args) {
|
||||
const [query] = args;
|
||||
const [query, raw] = args;
|
||||
let result;
|
||||
|
||||
try {
|
||||
@@ -48,8 +53,11 @@ class Jq extends Operation {
|
||||
} catch (err) {
|
||||
throw new OperationError(`Invalid jq expression: ${err.message}`);
|
||||
}
|
||||
|
||||
return JSON.stringify(result);
|
||||
if (raw && typeof result === "string") {
|
||||
return result;
|
||||
} else {
|
||||
return JSON.stringify(result);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
32
tests/operations/tests/Jq.mjs
Normal file
32
tests/operations/tests/Jq.mjs
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Jq tests.
|
||||
*
|
||||
* @author rtpt-romankarwacik [roman.karwacik@redteam-pentesting.de]
|
||||
*
|
||||
*/
|
||||
import TestRegister from "../../lib/TestRegister.mjs";
|
||||
|
||||
TestRegister.addTests([
|
||||
{
|
||||
name: "Get raw JSON Property",
|
||||
input: '{"data": "testString\\u0000"}',
|
||||
expectedOutput: "testString\u0000",
|
||||
recipeConfig: [
|
||||
{
|
||||
op: "Jq",
|
||||
args: [".data", true],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Get JSON Property",
|
||||
input: '{"data": "testString\\u0000"}',
|
||||
expectedOutput: "\"testString\\u0000\"",
|
||||
recipeConfig: [
|
||||
{
|
||||
op: "Jq",
|
||||
args: [".data", false],
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
Reference in New Issue
Block a user