From 1fb712e2bf00a4fdfa4168e91e05807d42692051 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 31 Mar 2024 06:57:59 -0700 Subject: [PATCH] Add msg:set_data() This method allows replacing the message payload arbitrarily. This is a building block for more advanced and convenient modification operations. refs: https://github.com/KumoCorp/kumomta/issues/117 refs: https://github.com/KumoCorp/kumomta/issues/120 --- crates/message/src/message.rs | 4 ++++ docs/reference/message/get_data.md | 2 ++ docs/reference/message/set_data.md | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 docs/reference/message/set_data.md diff --git a/crates/message/src/message.rs b/crates/message/src/message.rs index 572b1959..3d0cd02b 100644 --- a/crates/message/src/message.rs +++ b/crates/message/src/message.rs @@ -915,6 +915,10 @@ impl UserData for Message { let data = this.get_data(); lua.create_string(&*data) }); + methods.add_method("set_data", move |_lua, this, data: mlua::String| { + this.assign_data(data.as_bytes().to_vec()); + Ok(()) + }); methods.add_method("id", move |_, this, _: ()| Ok(this.id().to_string())); methods.add_method("sender", move |_, this, _: ()| { Ok(this.sender().map_err(any_err)?) diff --git a/docs/reference/message/get_data.md b/docs/reference/message/get_data.md index 3c29cbeb..7d6add91 100644 --- a/docs/reference/message/get_data.md +++ b/docs/reference/message/get_data.md @@ -2,3 +2,5 @@ Returns the message body/data as a string. +See also: +* [msg:set_data()](set_data.md) diff --git a/docs/reference/message/set_data.md b/docs/reference/message/set_data.md new file mode 100644 index 00000000..bdd96708 --- /dev/null +++ b/docs/reference/message/set_data.md @@ -0,0 +1,11 @@ +# `message:set_data(payload)` + +{{since('dev')}} + +Replaces the message body/data completely. +It is your responsibility to ensure that the content is well-formed, has +canonical CRLF line endings, and uses appropriate transfer-encoding, otherwise +the system will misbehave when delivering the message. + +See also: +* [msg:get_data()](get_data.md)