Browse Source

[Feature] Add more functions to extract data from text parts

tags/1.3.0
Vsevolod Stakhov 7 years ago
parent
commit
ccb38eaf7f
1 changed files with 55 additions and 1 deletions
  1. 55
    1
      src/lua/lua_mimepart.c

+ 55
- 1
src/lua/lua_mimepart.c View File

@@ -47,10 +47,22 @@ end
LUA_FUNCTION_DEF (textpart, is_utf);
/***
* @method text_part:get_content()
* Get the text of the part
* Get the text of the part (html tags stripped)
* @return {text} `UTF8` encoded content of the part (zero-copy if not converted to a lua string)
*/
LUA_FUNCTION_DEF (textpart, get_content);
/***
* @method text_part:get_raw_content()
* Get the original text of the part
* @return {text} `UTF8` encoded content of the part (zero-copy if not converted to a lua string)
*/
LUA_FUNCTION_DEF (textpart, get_raw_content);
/***
* @method text_part:get_content_oneline()
*Get the text of the part (html tags and newlines stripped)
* @return {text} `UTF8` encoded content of the part (zero-copy if not converted to a lua string)
*/
LUA_FUNCTION_DEF (textpart, get_content_oneline);
/***
* @method text_part:get_length()
* Get length of the text of the part
@@ -109,6 +121,8 @@ LUA_FUNCTION_DEF (textpart, get_mimepart);
static const struct luaL_reg textpartlib_m[] = {
LUA_INTERFACE_DEF (textpart, is_utf),
LUA_INTERFACE_DEF (textpart, get_content),
LUA_INTERFACE_DEF (textpart, get_raw_content),
LUA_INTERFACE_DEF (textpart, get_content_oneline),
LUA_INTERFACE_DEF (textpart, get_length),
LUA_INTERFACE_DEF (textpart, get_raw_length),
LUA_INTERFACE_DEF (textpart, get_lines_count),
@@ -333,6 +347,46 @@ lua_textpart_get_content (lua_State * L)
return 1;
}

static gint
lua_textpart_get_raw_content (lua_State * L)
{
struct rspamd_mime_text_part *part = lua_check_textpart (L);
struct rspamd_lua_text *t;

if (part == NULL || IS_PART_EMPTY (part)) {
lua_pushnil (L);
return 1;
}

t = lua_newuserdata (L, sizeof (*t));
rspamd_lua_setclass (L, "rspamd{text}", -1);
t->start = part->orig->data;
t->len = part->orig->len;
t->own = FALSE;

return 1;
}

static gint
lua_textpart_get_content_oneline (lua_State * L)
{
struct rspamd_mime_text_part *part = lua_check_textpart (L);
struct rspamd_lua_text *t;

if (part == NULL || IS_PART_EMPTY (part)) {
lua_pushnil (L);
return 1;
}

t = lua_newuserdata (L, sizeof (*t));
rspamd_lua_setclass (L, "rspamd{text}", -1);
t->start = part->stripped_content->data;
t->len = part->stripped_content->len;
t->own = FALSE;

return 1;
}

static gint
lua_textpart_get_length (lua_State * L)
{

Loading…
Cancel
Save