#include #include "switch_curl.h" #include SWITCH_DECLARE(switch_CURL *) switch_curl_easy_init(void) { return curl_easy_init(); } SWITCH_DECLARE(switch_CURLcode) switch_curl_easy_perform(switch_CURL *handle) { return curl_easy_perform((CURL *)handle); } SWITCH_DECLARE(switch_CURLcode) switch_curl_easy_getinfo(switch_CURL *curl, switch_CURLINFO info, ... ) { va_list ap; switch_CURLcode code; va_start(ap, info); code = curl_easy_getinfo(curl, info, va_arg(ap, void *)); va_end(ap); return code; } SWITCH_DECLARE(void) switch_curl_easy_cleanup(switch_CURL *handle) { curl_easy_cleanup((CURL *)handle); } SWITCH_DECLARE(switch_curl_slist_t *) switch_curl_slist_append(switch_curl_slist_t * list, const char * string ) { return (switch_curl_slist_t *) curl_slist_append((struct curl_slist *)list, string); } SWITCH_DECLARE(void) switch_curl_slist_free_all(switch_curl_slist_t * list) { curl_slist_free_all((struct curl_slist *) list); } SWITCH_DECLARE(const char *) switch_curl_easy_strerror(switch_CURLcode errornum ) { return curl_easy_strerror(errornum); } SWITCH_DECLARE(void) switch_curl_init(void) { curl_global_init(CURL_GLOBAL_ALL); } SWITCH_DECLARE(void) switch_curl_destroy(void) { curl_global_cleanup(); } SWITCH_DECLARE(switch_status_t) switch_curl_process_form_post_params(switch_event_t *event, switch_CURL *curl_handle, struct curl_httppost **formpostp) { struct curl_httppost *formpost=NULL; struct curl_httppost *lastptr=NULL; switch_event_header_t *hp; int go = 0; for (hp = event->headers; hp; hp = hp->next) { if (!strncasecmp(hp->name, "attach_file:", 12)) { go = 1; break; } } if (!go) { return SWITCH_STATUS_FALSE; } for (hp = event->headers; hp; hp = hp->next) { if (!strncasecmp(hp->name, "attach_file:", 12)) { char *pname = strdup(hp->name + 12); if (pname) { char *fname = strchr(pname, ':'); if (fname) { *fname++ = '\0'; curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, pname, CURLFORM_FILENAME, fname, CURLFORM_FILE, hp->value, CURLFORM_END); } free(pname); } } else { curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, hp->name, CURLFORM_COPYCONTENTS, hp->value, CURLFORM_END); } } *formpostp = formpost; return SWITCH_STATUS_SUCCESS; } /* For Emacs: * Local Variables: * mode:c * indent-tabs-mode:t * tab-width:4 * c-basic-offset:4 * End: * For VIM: * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: */