@@ -33,14 +33,13 @@ pub fn fn_img_metadata<'x>(ctx: &'x Context<'x>, v: Vec<Variable>) -> Variable {
|
||||
"type" => imagesize::image_type(bytes).ok().map(|t| {
|
||||
Variable::from(match t {
|
||||
imagesize::ImageType::Aseprite => "aseprite",
|
||||
imagesize::ImageType::Avif => "avif",
|
||||
imagesize::ImageType::Bmp => "bmp",
|
||||
imagesize::ImageType::Dds => "dds",
|
||||
imagesize::ImageType::Exr => "exr",
|
||||
imagesize::ImageType::Farbfeld => "farbfeld",
|
||||
imagesize::ImageType::Gif => "gif",
|
||||
imagesize::ImageType::Hdr => "hdr",
|
||||
imagesize::ImageType::Heif => "heif",
|
||||
imagesize::ImageType::Heif(_) => "heif",
|
||||
imagesize::ImageType::Ico => "ico",
|
||||
imagesize::ImageType::Jpeg => "jpeg",
|
||||
imagesize::ImageType::Jxl => "jxl",
|
||||
@@ -53,6 +52,8 @@ pub fn fn_img_metadata<'x>(ctx: &'x Context<'x>, v: Vec<Variable>) -> Variable {
|
||||
imagesize::ImageType::Tiff => "tiff",
|
||||
imagesize::ImageType::Vtf => "vtf",
|
||||
imagesize::ImageType::Webp => "webp",
|
||||
imagesize::ImageType::Ilbm => "ilbm",
|
||||
_ => "unknown",
|
||||
})
|
||||
}),
|
||||
"width" => imagesize::blob_size(bytes)
|
||||
|
||||
@@ -116,7 +116,7 @@ async fn train(ctx: PluginContext<'_>, is_train: bool) -> Variable {
|
||||
);
|
||||
|
||||
// Update weight and invalidate cache
|
||||
let bayes_cache = &ctx.core.sieve.bayes_cache;
|
||||
let bayes_cache = &ctx.cache.bayes_cache;
|
||||
if is_train {
|
||||
for (hash, weights) in model.weights {
|
||||
if store
|
||||
@@ -209,7 +209,7 @@ pub async fn exec_classify(ctx: PluginContext<'_>) -> Variable {
|
||||
}
|
||||
|
||||
// Obtain training counts
|
||||
let bayes_cache = &ctx.core.sieve.bayes_cache;
|
||||
let bayes_cache = &ctx.cache.bayes_cache;
|
||||
let (spam_learns, ham_learns) =
|
||||
if let Some(weights) = bayes_cache.get_or_update(TokenHash::default(), store).await {
|
||||
(weights.spam, weights.ham)
|
||||
@@ -286,7 +286,7 @@ pub async fn exec_is_balanced(ctx: PluginContext<'_>) -> Variable {
|
||||
let learn_spam = ctx.arguments[1].to_bool();
|
||||
|
||||
// Obtain training counts
|
||||
let bayes_cache = &ctx.core.sieve.bayes_cache;
|
||||
let bayes_cache = &ctx.cache.bayes_cache;
|
||||
let (spam_learns, ham_learns) =
|
||||
if let Some(weights) = bayes_cache.get_or_update(TokenHash::default(), store).await {
|
||||
(weights.spam as f64, weights.ham as f64)
|
||||
|
||||
@@ -180,7 +180,7 @@ pub async fn exec_remote(ctx: PluginContext<'_>) -> Variable {
|
||||
const MAX_ENTRY_SIZE: usize = 256;
|
||||
const MAX_ENTRIES: usize = 100000;
|
||||
|
||||
match ctx.core.sieve.remote_lists.read().get(resource.as_ref()) {
|
||||
match ctx.cache.remote_lists.read().get(resource.as_ref()) {
|
||||
Some(remote_list) if remote_list.expires < Instant::now() => {
|
||||
return remote_list.entries.contains(item.as_ref()).into()
|
||||
}
|
||||
@@ -245,7 +245,7 @@ pub async fn exec_remote(ctx: PluginContext<'_>) -> Variable {
|
||||
};
|
||||
|
||||
// Lock remote list for writing
|
||||
let mut _lock = ctx.core.sieve.remote_lists.write();
|
||||
let mut _lock = ctx.cache.remote_lists.write();
|
||||
let list = _lock
|
||||
.entry(resource.to_string())
|
||||
.or_insert_with(|| RemoteList {
|
||||
@@ -369,7 +369,7 @@ pub async fn exec_remote(ctx: PluginContext<'_>) -> Variable {
|
||||
}
|
||||
|
||||
// Something went wrong, try again in one hour
|
||||
let mut _lock = ctx.core.sieve.remote_lists.write();
|
||||
let mut _lock = ctx.cache.remote_lists.write();
|
||||
let list = _lock
|
||||
.entry(resource.to_string())
|
||||
.or_insert_with(|| RemoteList {
|
||||
|
||||
@@ -34,7 +34,7 @@ pub mod text;
|
||||
use mail_parser::Message;
|
||||
use sieve::{runtime::Variable, FunctionMap, Input};
|
||||
|
||||
use crate::Core;
|
||||
use crate::{config::scripts::ScriptCache, Core};
|
||||
|
||||
use super::ScriptModification;
|
||||
|
||||
@@ -43,6 +43,7 @@ type RegisterPluginFnc = fn(u32, &mut FunctionMap) -> ();
|
||||
pub struct PluginContext<'x> {
|
||||
pub span: &'x tracing::Span,
|
||||
pub core: &'x Core,
|
||||
pub cache: &'x ScriptCache,
|
||||
pub message: &'x Message<'x>,
|
||||
pub modifications: &'x mut Vec<ScriptModification>,
|
||||
pub arguments: Vec<Variable>,
|
||||
|
||||
Reference in New Issue
Block a user