Module: sems
Branch: master
Commit: f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b
URL: 
https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b

Author: Juha Heinanen <[email protected]>
Committer: Juha Heinanen <[email protected]>
Date: 2015-12-19T11:54:01+02:00

dsm mod_utils: added startsWith condition
- minor doc edits

---

Modified: apps/dsm/mods/mod_utils/ModUtils.cpp
Modified: apps/dsm/mods/mod_utils/ModUtils.h
Modified: doc/dsm/mods/Readme.mod_utils.txt

---

Diff:  
https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b.diff
Patch: 
https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b.patch

---

diff --git a/apps/dsm/mods/mod_utils/ModUtils.cpp 
b/apps/dsm/mods/mod_utils/ModUtils.cpp
index 444f23d..f7f0971 100644
--- a/apps/dsm/mods/mod_utils/ModUtils.cpp
+++ b/apps/dsm/mods/mod_utils/ModUtils.cpp
@@ -63,9 +63,13 @@ MOD_ACTIONEXPORT_BEGIN(MOD_CLS_NAME) {
 } MOD_ACTIONEXPORT_END;
 
 MOD_CONDITIONEXPORT_BEGIN(MOD_CLS_NAME) {
+
   if (cmd == "utils.isInList") {
     return new IsInListCondition(params, false);
   }
+  if (cmd == "utils.startsWith") {
+    return new StartsWithCondition(params, false);
+  }
 
 } MOD_CONDITIONEXPORT_END;
 
@@ -433,7 +437,7 @@ EXEC_ACTION_START(SCUReplaceAction) {
   if (varname.length() && varname[0] == '$')
     varname = varname.substr(1);
 
-  INFO("setting var[%s] = %s\n", varname.c_str(), subject.c_str());
+  DBG("setting var[%s] = %s\n", varname.c_str(), subject.c_str());
   sc_sess->var[varname] = subject;
 
 } EXEC_ACTION_END;
@@ -550,3 +554,19 @@ MATCH_CONDITION_START(IsInListCondition) {
     return res;
   }
  } MATCH_CONDITION_END;
+
+CONST_CONDITION_2P(StartsWithCondition, ',', false);
+MATCH_CONDITION_START(StartsWithCondition) {
+
+  string key = resolveVars(par1, sess, sc_sess, event_params);
+  string prefix = resolveVars(par2, sess, sc_sess, event_params);
+
+  DBG("checking whether '%s' starts with '%s'\n", key.c_str(), prefix.c_str());
+  bool res = false;
+  res = (key.length() >= prefix.length()) &&
+    std::equal(prefix.begin(), prefix.end(), key.begin());
+  DBG("prefix %sfound\n", res?"":"not ");
+
+  return res;
+
+} MATCH_CONDITION_END;
diff --git a/apps/dsm/mods/mod_utils/ModUtils.h 
b/apps/dsm/mods/mod_utils/ModUtils.h
index b4bf1ea..f0171ab 100644
--- a/apps/dsm/mods/mod_utils/ModUtils.h
+++ b/apps/dsm/mods/mod_utils/ModUtils.h
@@ -36,6 +36,7 @@
 DECLARE_MODULE(MOD_CLS_NAME);
 
 DEF_CONDITION_2P(IsInListCondition);
+DEF_CONDITION_2P(StartsWithCondition);
 
 DEF_ACTION_2P(SCUPlayCountRightAction);
 DEF_ACTION_2P(SCUPlayCountLeftAction);
diff --git a/doc/dsm/mods/Readme.mod_utils.txt 
b/doc/dsm/mods/Readme.mod_utils.txt
index be91a61..b39fc3e 100644
--- a/doc/dsm/mods/Readme.mod_utils.txt
+++ b/doc/dsm/mods/Readme.mod_utils.txt
@@ -1,4 +1,6 @@
-Actions: 
+Actions
+-------
+
  utils.getNewId(string varname)
 
  utils.playCountRight(int cnt [, string basedir])
@@ -69,7 +71,7 @@ Actions:
    replace escaped CRLF (\\r\\n) in string with CRLF (\r\n) 
 
 
-utils.playRingTone(length [, on [, off [, f [, f2]]]])
+ utils.playRingTone(length [, on [, off [, f [, f2]]]])
    play a RingTone (ringback tone)
    defaults to length=0 (indefinite), on 1000ms, off 2000ms, f 440Hz, f2 480Hz
 
@@ -79,5 +81,8 @@ utils.playRingTone(length [, on [, off [, f [, f2]]]])
 Conditions
 ----------
 
-utils.isInList(key, cs_list) - match if key is in comma-separated list
+ utils.isInList(key, cs_list) - match if key is in comma-separated list
    e.g. if utils.isInList(#sip_code, "404, 405") { ... }
+
+ utils.startsWith(subject|$subject, prefix|$prefix) - match if subject
+   starts with prefix

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to