private WebhookResponse DeleteWebhook(int id) { string apiKey = GetMandrillApiKey(); string requestUrl = string.Format("{0}{1}", MandrillApiUrl, "/webhooks/delete.json"); var requestBobyObject = new WebhookApiInfoRequest { key = apiKey, id = id }; string requestBodyJson = new JavaScriptSerializer().Serialize(requestBobyObject); HttpWebRequest request = PrepareRequest(requestUrl); string response = ExecRequest(request, requestBodyJson); WebhookApiResponseError requestError = null; var requestResult = ConvertToWebhookResponse <WebhookApiResponse>(response, out requestError); var result = new WebhookResponse { Webhook = new List <WebhookApiResponse>() }; if (requestError != null || requestResult == null) { if (requestError != null) { Error = requestError.message; MandrillUtilities.Log.InfoFormat("MandrillWebhookService.DeleteWebhook error: {0}; {1}.", requestError.name, requestError.message); } return(result); } result.Success = true; result.Webhook.Add(requestResult); return(result); }
private WebhookResponse AddWebhook(string url, string description) { string apiKey = GetMandrillApiKey(); string requestUrl = string.Format("{0}{1}", MandrillApiUrl, "/webhooks/add.json"); var requestBodyObject = new WebhookApiAddRequest { key = apiKey, url = url, description = description, events = new string[] {} }; string requestBodyJson = new JavaScriptSerializer().Serialize(requestBodyObject); HttpWebRequest request = PrepareRequest(requestUrl); string response = ExecRequest(request, requestBodyJson); WebhookApiResponseError requestError = null; var requestResult = ConvertToWebhookResponse <WebhookApiResponse>(response, out requestError); var result = new WebhookResponse { Webhook = new List <WebhookApiResponse>() }; if (requestError != null || requestResult == null) { if (requestError != null) { Error = requestError.message; MandrillUtilities.Log.InfoFormat("AddWebhook error: {0}; {1}", requestError.name, requestError.message); } return(result); } result.Success = true; result.Webhook.Add(requestResult); return(result); }
public WebhookResult SubmitWebhook() { var result = new WebhookResult(); WebhookApiResponse currentWebhook = GetCurrentWebhook(); //List webhooks registered on Mandrill account. WebhookResponse listWebhooks = ListWebhook(); UserConnection userConnection = AppConnection.SystemUserConnection; string webhooksApplicationUrl = (string)Terrasoft.Core.Configuration.SysSettings.GetValue(userConnection, "WebhooksApplicationUrl"); string webhookUrl = !string.IsNullOrEmpty(webhooksApplicationUrl) ? webhooksApplicationUrl : string.Format( "{0}{1}", WebUtilities.GetBaseApplicationUrl(HttpContext.Current.Request), WebHookWebService); string previousWebhookUrl = currentWebhook.url; currentWebhook.url = webhookUrl; if (!listWebhooks.Success) { result.ErrorDescription = Error; return(result); } if (listWebhooks.Webhook.Any( x => (x.id == currentWebhook.id) && (x.auth_key == currentWebhook.auth_key) && (x.url == currentWebhook.url))) { result.Success = true; return(result); } //Remove webhooks that's already registered on the same url. foreach (WebhookApiResponse item in listWebhooks.Webhook) { if ((item.url != currentWebhook.url) && (item.url != previousWebhookUrl)) { continue; } if (!DeleteWebhook(item.id).Success) { result.ErrorDescription = Error; return(result); } } //Register new webhooks. WebhookResponse newWebhook = AddWebhook(webhookUrl, string.Empty); if (!newWebhook.Success) { result.ErrorDescription = Error; return(result); } //Remove old webhooks from DB. RemoveCurrentWebhook(); //Save new webhooks to DB. bool isSaved = SetCurrentWebhook(newWebhook.Webhook[0]); if (!isSaved) { result.ErrorDescription = Error; return(result); } result.Success = true; return(result); }