mirror of
https://github.com/gchq/CyberChef.git
synced 2024-11-16 08:58:30 +01:00
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* @author GCHQ Contributor [3]
|
||
|
* @copyright Crown Copyright 2021
|
||
|
* @license Apache-2.0
|
||
|
*/
|
||
|
|
||
|
import Operation from "../Operation.mjs";
|
||
|
import OperationError from "../errors/OperationError.mjs";
|
||
|
import Protobuf from "../lib/Protobuf.mjs";
|
||
|
|
||
|
/**
|
||
|
* Protobuf Encode operation
|
||
|
*/
|
||
|
class ProtobufEncode extends Operation {
|
||
|
|
||
|
/**
|
||
|
* ProtobufEncode constructor
|
||
|
*/
|
||
|
constructor() {
|
||
|
super();
|
||
|
|
||
|
this.name = "Protobuf Encode";
|
||
|
this.module = "Protobuf";
|
||
|
this.description = "Encodes a valid JSON object into a protobuf byte array using the input .proto schema.";
|
||
|
this.infoURL = "https://developers.google.com/protocol-buffers/docs/encoding";
|
||
|
this.inputType = "JSON";
|
||
|
this.outputType = "ArrayBuffer";
|
||
|
this.args = [
|
||
|
{
|
||
|
name: "Schema (.proto text)",
|
||
|
type: "text",
|
||
|
value: "",
|
||
|
rows: 8,
|
||
|
hint: "Drag and drop is enabled on this ingredient"
|
||
|
}
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param {Object} input
|
||
|
* @param {Object[]} args
|
||
|
* @returns {ArrayBuffer}
|
||
|
*/
|
||
|
run(input, args) {
|
||
|
try {
|
||
|
return Protobuf.encode(input, args);
|
||
|
} catch (error) {
|
||
|
throw new OperationError(error);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default ProtobufEncode;
|