Browse Source

kazoo : add specific pua helpers

Luis Azedo 8 years ago
parent
commit
7e710287c2
3 changed files with 83 additions and 0 deletions
  1. 3 0
      src/modules/kazoo/kazoo.c
  2. 77 0
      src/modules/kazoo/kz_pua.c
  3. 3 0
      src/modules/kazoo/kz_pua.h

+ 3 - 0
src/modules/kazoo/kazoo.c

@@ -138,6 +138,9 @@ static cmd_export_t cmds[] = {
     {"kazoo_query", (cmd_function) kz_amqp_query, 4, fixup_kz_amqp, fixup_kz_amqp_free, ANY_ROUTE},
     {"kazoo_query", (cmd_function) kz_amqp_query, 4, fixup_kz_amqp, fixup_kz_amqp_free, ANY_ROUTE},
     {"kazoo_query", (cmd_function) kz_amqp_query_ex, 3, fixup_kz_amqp, fixup_kz_amqp_free, ANY_ROUTE},
     {"kazoo_query", (cmd_function) kz_amqp_query_ex, 3, fixup_kz_amqp, fixup_kz_amqp_free, ANY_ROUTE},
     {"kazoo_pua_publish", (cmd_function) kz_pua_publish, 1, 0, 0, ANY_ROUTE},
     {"kazoo_pua_publish", (cmd_function) kz_pua_publish, 1, 0, 0, ANY_ROUTE},
+    {"kazoo_pua_publish_mwi", (cmd_function) kz_pua_publish_mwi, 1, 0, 0, ANY_ROUTE},
+    {"kazoo_pua_publish_presence", (cmd_function) kz_pua_publish_presence, 1, 0, 0, ANY_ROUTE},
+    {"kazoo_pua_publish_dialoginfo", (cmd_function) kz_pua_publish_dialoginfo, 1, 0, 0, ANY_ROUTE},
 
 
     {"kazoo_subscribe", (cmd_function) kz_amqp_subscribe, 1, fixup_kz_amqp4, fixup_kz_amqp4_free, ANY_ROUTE},
     {"kazoo_subscribe", (cmd_function) kz_amqp_subscribe, 1, fixup_kz_amqp4, fixup_kz_amqp4_free, ANY_ROUTE},
     {"kazoo_subscribe", (cmd_function) kz_amqp_subscribe_simple, 4, fixup_kz_amqp4, fixup_kz_amqp4_free, ANY_ROUTE},
     {"kazoo_subscribe", (cmd_function) kz_amqp_subscribe_simple, 4, fixup_kz_amqp4, fixup_kz_amqp4_free, ANY_ROUTE},

+ 77 - 0
src/modules/kazoo/kz_pua.c

@@ -511,3 +511,80 @@ error:
 	return ret;
 	return ret;
 }
 }
 
 
+int kz_pua_publish_mwi(struct sip_msg* msg, char *json) {
+    struct json_object *json_obj = NULL;
+    int ret = 1;
+
+    if(dbk_pua_mode != 1) {
+    	LM_ERR("pua_mode must be 1 to publish\n");
+    	ret = -1;
+    	goto error;
+    }
+
+    /* extract info from json and construct xml */
+    json_obj = kz_json_parse(json);
+    if (json_obj == NULL) {
+    	ret = -1;
+    	goto error;
+    }
+
+	ret = kz_pua_publish_mwi_to_presentity(json_obj);
+
+error:
+	if(json_obj)
+		json_object_put(json_obj);
+
+	return ret;
+}
+
+int kz_pua_publish_presence(struct sip_msg* msg, char *json) {
+    struct json_object *json_obj = NULL;
+    int ret = 1;
+
+    if(dbk_pua_mode != 1) {
+    	LM_ERR("pua_mode must be 1 to publish\n");
+    	ret = -1;
+    	goto error;
+    }
+
+    /* extract info from json and construct xml */
+    json_obj = kz_json_parse(json);
+    if (json_obj == NULL) {
+    	ret = -1;
+    	goto error;
+    }
+
+	ret = kz_pua_publish_presence_to_presentity(json_obj);
+
+error:
+	if(json_obj)
+		json_object_put(json_obj);
+
+	return ret;
+}
+
+int kz_pua_publish_dialoginfo(struct sip_msg* msg, char *json) {
+    struct json_object *json_obj = NULL;
+    int ret = 1;
+
+    if(dbk_pua_mode != 1) {
+    	LM_ERR("pua_mode must be 1 to publish\n");
+    	ret = -1;
+    	goto error;
+    }
+
+    /* extract info from json and construct xml */
+    json_obj = kz_json_parse(json);
+    if (json_obj == NULL) {
+    	ret = -1;
+    	goto error;
+    }
+
+	ret = kz_pua_publish_dialoginfo_to_presentity(json_obj);
+
+error:
+	if(json_obj)
+		json_object_put(json_obj);
+
+	return ret;
+}

+ 3 - 0
src/modules/kazoo/kz_pua.h

@@ -27,6 +27,9 @@
 
 
 int kz_initialize_pua();
 int kz_initialize_pua();
 int kz_pua_publish(struct sip_msg* msg, char *json);
 int kz_pua_publish(struct sip_msg* msg, char *json);
+int kz_pua_publish_mwi(struct sip_msg* msg, char *json);
+int kz_pua_publish_presence(struct sip_msg* msg, char *json);
+int kz_pua_publish_dialoginfo(struct sip_msg* msg, char *json);
 
 
 
 
 #endif
 #endif