Paw 的 DynamicValueInput 类型 JSON 和 Checkbox 的问题
Issues with Paw's DynamicValueInput type JSON and Checkbox
我想为生成 Json Web 令牌的 Paw 创建一个 DynamicValue 插件。完整的来源可以在这里找到:https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue
相关文件:
// JsonWebTokenDynamicValue.js
import jsrsasign from 'jsrsasign';
@registerDynamicValueClass
class JsonWebTokenDynamicValue {
static identifier = 'de.choffmeister.PawExtensions.JsonWebTokenDynamicValue';
static title = 'Json Web Token';
static help = 'https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue';
static inputs = [
DynamicValueInput('signatureSecret', 'Secret', 'SecureValue'),
DynamicValueInput('signatureSecretIsBase64', 'Secret is Base64', 'Checkbox'),
DynamicValueInput('payload', 'Payload', 'JSON')
];
evaluate() {
console.log(JSON.stringify(this.payload, null, 2));
console.log(JSON.stringify(this.signatureSecretIsBase64, null, 2));
const now = Math.floor((new Date()).getTime() / 1000);
const header = {
typ: 'JWT',
alg: 'HS256'
};
const payload = {
...this.payload,
exp: now + (60 * 60 * 24 * 7),
iat: now
};
const secret = this.signatureSecretIsBase64
? {b64: jsrsasign.b64utob64(this.signatureSecret)}
: this.signatureSecret;
return jsrsasign.jws.JWS.sign(null, header, payload, secret);
}
}
它在 GUI 中的外观:
我搜索了https://luckymarmot.com/paw/doc/extensions/create-dynamic-value,周围的文档和我在网上能找到的所有插件示例,但我仍然有两个问题无法解决:
- 当使用
Checkbox
类型的 DynamicValueInput 时,输入字段不可见(见屏幕截图)。我得到一个值(空字符串),但就是看不到它。如何让复选框出现?
当使用 JSON
类型的 DynamicValueInput 时,JSON 中使用的动态值(见屏幕截图)没有得到解析,而是我得到了一种描述对象( stringified),这个动态值是什么。记录 this.payload
对象如下所示:
{
"foo": "[{\"data\":{\"environmentVariable\":\"2925ABDA-8AAC-440B-B2CA-DA216CD37A09\"},\"identifier\":\"com.luckymarmot.EnvironmentVariableDynamicValue\"}]"
}
也许值得注意:当使用 KeyValueList
类型的 DynamicInputValue 时,内部动态值会被正确解析。我怎样才能用 JSON
类型实现这个呢?
此问题已在 Paw 2.3.3 and @Thekwasti's extension has actually been published here: https://luckymarmot.com/paw/extensions/JsonWebTokenDynamicValue
中解决
我想为生成 Json Web 令牌的 Paw 创建一个 DynamicValue 插件。完整的来源可以在这里找到:https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue
相关文件:
// JsonWebTokenDynamicValue.js
import jsrsasign from 'jsrsasign';
@registerDynamicValueClass
class JsonWebTokenDynamicValue {
static identifier = 'de.choffmeister.PawExtensions.JsonWebTokenDynamicValue';
static title = 'Json Web Token';
static help = 'https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue';
static inputs = [
DynamicValueInput('signatureSecret', 'Secret', 'SecureValue'),
DynamicValueInput('signatureSecretIsBase64', 'Secret is Base64', 'Checkbox'),
DynamicValueInput('payload', 'Payload', 'JSON')
];
evaluate() {
console.log(JSON.stringify(this.payload, null, 2));
console.log(JSON.stringify(this.signatureSecretIsBase64, null, 2));
const now = Math.floor((new Date()).getTime() / 1000);
const header = {
typ: 'JWT',
alg: 'HS256'
};
const payload = {
...this.payload,
exp: now + (60 * 60 * 24 * 7),
iat: now
};
const secret = this.signatureSecretIsBase64
? {b64: jsrsasign.b64utob64(this.signatureSecret)}
: this.signatureSecret;
return jsrsasign.jws.JWS.sign(null, header, payload, secret);
}
}
它在 GUI 中的外观:
我搜索了https://luckymarmot.com/paw/doc/extensions/create-dynamic-value,周围的文档和我在网上能找到的所有插件示例,但我仍然有两个问题无法解决:
- 当使用
Checkbox
类型的 DynamicValueInput 时,输入字段不可见(见屏幕截图)。我得到一个值(空字符串),但就是看不到它。如何让复选框出现? 当使用
JSON
类型的 DynamicValueInput 时,JSON 中使用的动态值(见屏幕截图)没有得到解析,而是我得到了一种描述对象( stringified),这个动态值是什么。记录this.payload
对象如下所示:{ "foo": "[{\"data\":{\"environmentVariable\":\"2925ABDA-8AAC-440B-B2CA-DA216CD37A09\"},\"identifier\":\"com.luckymarmot.EnvironmentVariableDynamicValue\"}]" }
也许值得注意:当使用
KeyValueList
类型的 DynamicInputValue 时,内部动态值会被正确解析。我怎样才能用JSON
类型实现这个呢?
此问题已在 Paw 2.3.3 and @Thekwasti's extension has actually been published here: https://luckymarmot.com/paw/extensions/JsonWebTokenDynamicValue
中解决