Added received time to expression

pull/215/head
M66B 8 months ago
parent fb02b318e0
commit 04265c6a7d

@ -2765,8 +2765,9 @@ Please [see here](https://ezylang.github.io/EvalEx/references/references.html) a
The following extra variables are available:
* *from* (array)
* *to* (array)
* *received* (long, unix epoch in milliseconds; since version 1.2179)
* *from* (array of strings)
* *to* (array of strings)
* *subject* (string)
* *text* (string)
* *hasAttachments* (boolean; deprecated, use function *attachments()* instead)

@ -155,10 +155,6 @@ public class EntityRule {
private static final int MAX_NOTES_LENGTH = 512; // characters
private static final int URL_TIMEOUT = 15 * 1000; // milliseconds
private static final List<String> EXPR_VARIABLES = Collections.unmodifiableList(Arrays.asList(
"to", "from", "subject", "text", "hasAttachments"
));
static boolean needsHeaders(EntityMessage message, List<EntityRule> rules) {
return needsHeaders(rules);
}
@ -691,16 +687,8 @@ public class EntityRule {
void validate(Context context) throws JSONException, IllegalArgumentException {
try {
Expression expression = ExpressionHelper.getExpression(this, null, null, null, context);
if (expression != null) {
for (String variable : expression.getUsedVariables()) {
Log.i("EXPR variable=" + variable);
if (!EXPR_VARIABLES.contains(variable))
throw new IllegalArgumentException("Unknown variable '" + variable + "'");
}
Log.i("EXPR validating");
expression.validate();
Log.i("EXPR validated");
}
if (expression != null)
ExpressionHelper.check(expression);
} catch (ParseException | MessagingException ex) {
Log.w("EXPR", ex);
String message = ex.getMessage();

@ -60,6 +60,21 @@ import javax.mail.internet.InternetAddress;
import javax.mail.internet.InternetHeaders;
public class ExpressionHelper {
private static final List<String> EXPR_VARIABLES = Collections.unmodifiableList(Arrays.asList(
"received", "to", "from", "subject", "text", "hasAttachments"
));
static void check(Expression expression) throws ParseException {
for (String variable : expression.getUsedVariables()) {
Log.i("EXPR variable=" + variable);
if (!EXPR_VARIABLES.contains(variable))
throw new IllegalArgumentException("Unknown variable '" + variable + "'");
}
Log.i("EXPR validating");
expression.validate();
Log.i("EXPR validated");
}
static Expression getExpression(EntityRule rule, EntityMessage message, List<Header> headers, String html, Context context) throws JSONException, ParseException, MessagingException {
// https://ezylang.github.io/EvalEx/
@ -120,6 +135,7 @@ public class ExpressionHelper {
configuration.getOperatorDictionary().addOperator("Matches", oMatches);
Expression expression = new Expression(eval, configuration)
.with("received", message == null ? null : message.received)
.with("to", to)
.with("from", from)
.with("subject", message == null ? null : message.subject)

@ -1504,8 +1504,9 @@ X-Google-Original-From: Somebody &lt;somebody+extra@example.org&gt;</code></pre>
<p>Please <a href="https://ezylang.github.io/EvalEx/references/references.html">see here</a> about which constants, operators and functions are available.</p>
<p>The following extra variables are available:</p>
<ul>
<li><em>from</em> (array)</li>
<li><em>to</em> (array)</li>
<li><em>received</em> (long, unix epoch in milliseconds; since version 1.2179)</li>
<li><em>from</em> (array of strings)</li>
<li><em>to</em> (array of strings)</li>
<li><em>subject</em> (string)</li>
<li><em>text</em> (string)</li>
<li><em>hasAttachments</em> (boolean; deprecated, use function <em>attachments()</em> instead)</li>

Loading…
Cancel
Save