From 068ad205b7a13abebb3f1298a6cb4c78cdc36911 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 30 Apr 2014 15:48:23 -0400 Subject: [PATCH] split this into 2 functions so its clear if this function allocates or not --- src/mod/applications/mod_voicemail_ivr/menu.c | 8 ++-- .../applications/mod_voicemail_ivr/utils.c | 38 ++++++++++++------- .../applications/mod_voicemail_ivr/utils.h | 3 +- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/mod/applications/mod_voicemail_ivr/menu.c b/src/mod/applications/mod_voicemail_ivr/menu.c index 560068cead..9553a90951 100644 --- a/src/mod/applications/mod_voicemail_ivr/menu.c +++ b/src/mod/applications/mod_voicemail_ivr/menu.c @@ -95,7 +95,7 @@ void vmivr_menu_main(switch_core_session_t *session, vmivr_profile_t *profile) { ivre_init(&menu.ivre_d, menu.dtmfa); cmd = switch_core_session_sprintf(session, "json %s %s %s %s", profile->api_profile, profile->domain, profile->id, profile->folder_name); - jsonapi2event(session, menu.phrase_params, profile->api_msg_count, cmd); + jsonapi_populate_event(session, menu.phrase_params, profile->api_msg_count, cmd); /* Verify that phrases returned values, if not, exit */ if (!switch_event_get_header(menu.phrase_params, "VM-Total-New-Messages")) { @@ -192,7 +192,7 @@ void vmivr_menu_navigator(switch_core_session_t *session, vmivr_profile_t *profi /* Get VoiceMail List And update msg count */ cmd = switch_core_session_sprintf(session, "json %s %s %s %s %s", profile->api_profile, profile->domain, profile->id, profile->folder_name, profile->folder_filter); - msg_list_params = jsonapi2event(session, NULL, profile->api_msg_list, cmd); + msg_list_params = jsonapi2event(session, profile->api_msg_list, cmd); if (msg_list_params) { msg_count = atol(switch_event_get_header(msg_list_params,"VM-List-Count")); if (msg_count == 0) { @@ -266,7 +266,7 @@ void vmivr_menu_navigator(switch_core_session_t *session, vmivr_profile_t *profi if (!skip_header) { if (!initial_count_played) { cmd = switch_core_session_sprintf(session, "json %s %s %s", profile->api_profile, profile->domain, profile->id); - jsonapi2event(session, menu.phrase_params, profile->api_msg_count, cmd); + jsonapi_populate_event(session, menu.phrase_params, profile->api_msg_count, cmd); initial_count_played = SWITCH_TRUE; // TODO ivre_playback(session, &menu.ivre_d, switch_event_get_header(menu.event_phrases, "msg_count"), NULL, menu.phrase_params, NULL, 0); } @@ -597,7 +597,7 @@ void vmivr_menu_select_greeting_slot(switch_core_session_t *session, vmivr_profi if (vmivr_api_execute(session, profile->api_pref_greeting_set, cmd) == SWITCH_STATUS_SUCCESS) { char *str_num = switch_core_session_sprintf(session, "%d", gnum); char *cmd = switch_core_session_sprintf(session, "json %s %s %s %d %s", profile->api_profile, profile->domain, profile->id); - switch_event_t *phrases = jsonapi2event(session, NULL, profile->api_pref_greeting_get, cmd); + switch_event_t *phrases = jsonapi2event(session, profile->api_pref_greeting_get, cmd); ivre_playback_dtmf_buffered(session, switch_event_get_header(menu.event_phrases, "selected_slot"), str_num, phrases, NULL, 0); diff --git a/src/mod/applications/mod_voicemail_ivr/utils.c b/src/mod/applications/mod_voicemail_ivr/utils.c index 73f58b84b2..b35edb4071 100644 --- a/src/mod/applications/mod_voicemail_ivr/utils.c +++ b/src/mod/applications/mod_voicemail_ivr/utils.c @@ -75,7 +75,29 @@ end: return status; } -switch_event_t *jsonapi2event(switch_core_session_t *session, switch_event_t *apply_event, const char *api, const char *data) { +void jsonapi_populate_event(switch_core_session_t *session, switch_event_t *apply_event, const char *api, const char *data) { + switch_event_t *phrases_event = NULL; + switch_stream_handle_t stream = { 0 }; + + switch_assert(apply_event); + SWITCH_STANDARD_STREAM(stream); + switch_api_execute(api, data, session, &stream); + switch_event_create_json(&phrases_event, (char *) stream.data); + switch_safe_free(stream.data); + + switch_event_header_t *hp; + for (hp = phrases_event->headers; hp; hp = hp->next) { + if (!strncasecmp(hp->name, "VM-", 3)) { + switch_event_add_header(apply_event, SWITCH_STACK_BOTTOM, hp->name, "%s", hp->value); + } + } + switch_event_destroy(&phrases_event); + phrases_event = apply_event; + + return; +} + +switch_event_t *jsonapi2event(switch_core_session_t *session, const char *api, const char *data) { switch_event_t *phrases_event = NULL; switch_stream_handle_t stream = { 0 }; SWITCH_STANDARD_STREAM(stream); @@ -83,18 +105,6 @@ switch_event_t *jsonapi2event(switch_core_session_t *session, switch_event_t *ap switch_event_create_json(&phrases_event, (char *) stream.data); switch_safe_free(stream.data); - if (apply_event) { - switch_event_header_t *hp; - for (hp = phrases_event->headers; hp; hp = hp->next) { - if (!strncasecmp(hp->name, "VM-", 3)) { - switch_event_add_header(apply_event, SWITCH_STACK_BOTTOM, hp->name, "%s", hp->value); - } - } - switch_event_destroy(&phrases_event); - phrases_event = apply_event; - - } - return phrases_event; } @@ -139,7 +149,7 @@ void append_event_message(switch_core_session_t *session, vmivr_profile_t *profi switch_safe_free(varname); - jsonapi2event(session, phrase_params, profile->api_msg_get, apicmd); + jsonapi_populate_event(session, phrase_params, profile->api_msg_get, apicmd); /* TODO Set these 2 header correctly */ switch_event_add_header(phrase_params, SWITCH_STACK_BOTTOM, "VM-Message-Type", "%s", "new"); diff --git a/src/mod/applications/mod_voicemail_ivr/utils.h b/src/mod/applications/mod_voicemail_ivr/utils.h index 11219d1aad..e497ec6101 100644 --- a/src/mod/applications/mod_voicemail_ivr/utils.h +++ b/src/mod/applications/mod_voicemail_ivr/utils.h @@ -36,7 +36,8 @@ void append_event_message(switch_core_session_t *session, vmivr_profile_t *profile, switch_event_t *phrase_params, switch_event_t *msg_list_event, size_t current_msg); char *generate_random_file_name(switch_core_session_t *session, const char *mod_name, const char *file_extension); -switch_event_t *jsonapi2event(switch_core_session_t *session, switch_event_t *apply_event, const char *api, const char *data); +switch_event_t *jsonapi2event(switch_core_session_t *session, const char *api, const char *data); +void jsonapi_populate_event(switch_core_session_t *session, switch_event_t *apply_event, const char *api, const char *data); switch_status_t vmivr_merge_media_files(const char** inputs, const char *output, int rate); switch_status_t vmivr_api_execute(switch_core_session_t *session, const char *apiname, const char *arguments); #endif /* _UTIL_H_ */