/// <summary> /// Atualize os campos status e eventTypes dos webhooks cadastradados. /// Ao menos um dos campos precisa ser mudado, não sendo necessário a mudança de ambos ao mesmo tempo.Entretanto, envie ambos os campos mesmo que apenas um destes venha a ser modificado. /// A url do Webhook não pode ser modificada. /// </summary> /// <param name="resourceToken"></param> /// <param name="webhook"></param> /// <returns></returns> public Webhook UpdateWebhook(string resourceToken, string webhookId, Models.Requests.UpdateWebhookResource.UpdateWebhook webhook) { if (string.IsNullOrWhiteSpace(resourceToken)) { throw new ArgumentNullException(nameof(resourceToken)); } if (webhook.EventTypes == null || webhook.EventTypes.Count == 0) { throw new ArgumentNullException(nameof(webhook.EventTypes)); } var request = new Requests.Notifications.UpdateWebhookRequest(Client.GetRequestContext()); return(request.Execute(new Models.Requests.UpdateWebhookResource() { ResourceToken = resourceToken, WebhookId = webhookId, Webhook = webhook, })); }
public void Notifications() { var service = new NotificationsService(_Client); // // Listar tipos de eventos var eventTypes = service.ListEventTypes(); Assert.IsNotNull(eventTypes); Assert.IsNotNull(eventTypes.Embedded); Assert.IsNotNull(eventTypes.Embedded.EventTypes); Assert.IsTrue(eventTypes.Embedded.EventTypes.Count > 0); // // Remove todos os webhooks var oldWebhooks = service.ListWebhooks(_Client.Credentials.PrivateToken); if (oldWebhooks != null && oldWebhooks.Embedded != null && oldWebhooks.Embedded.Webhooks != null) { foreach (var webhook in oldWebhooks.Embedded.Webhooks) { service.DeleteWebhook(_Client.Credentials.PrivateToken, webhook.Id); } } // // Criar webhook var allEventTypes = Enum.GetValues <Models.EventName>().ToList(); var createWebhook = new Models.Requests.CreateWebhookResource.CreateWebhook { BaseUrl = "https://domain.com", QueryParameters = new Dictionary <string, object> { ["debug"] = true }, EventTypes = Enum.GetValues <Models.EventName>().ToList() }; var newWebhook = service.CreateWebhook(_Client.Credentials.PrivateToken, createWebhook); Assert.IsNotNull(newWebhook); Assert.AreEqual(newWebhook.Url.ToLower(), $"{createWebhook.BaseUrl}/juno/wh/notifications?debug=true".ToLower()); Assert.IsTrue(newWebhook.EventTypes.Count == allEventTypes.Count); var newWebhookId = newWebhook.Id; // // Listar webhooks var webhooks = service.ListWebhooks(_Client.Credentials.PrivateToken); Assert.IsNotNull(webhooks); Assert.IsNotNull(webhooks.Embedded); Assert.IsNotNull(webhooks.Embedded.Webhooks); Assert.IsTrue(webhooks.Embedded.Webhooks.Count > 0 && webhooks.Embedded.Webhooks.Any(o => o.Id == newWebhookId)); // // Consultar webhook newWebhook = service.GetWebhook(_Client.Credentials.PrivateToken, newWebhookId); Assert.IsNotNull(newWebhook); Assert.AreEqual(newWebhook.Id, newWebhookId); // // Atualizar webhook var updateWebhook = new Models.Requests.UpdateWebhookResource.UpdateWebhook { Status = Models.WebhookStatus.INACTIVE, EventTypes = new List <Models.EventName> { Models.EventName.CHARGE_READ_CONFIRMATION } }; newWebhook = service.UpdateWebhook(_Client.Credentials.PrivateToken, newWebhookId, updateWebhook); Assert.IsNotNull(newWebhook); Assert.AreEqual(newWebhook.Status, Models.WebhookStatus.INACTIVE); Assert.IsTrue(newWebhook.EventTypes.Count == 1 && newWebhook.EventTypes[0].Name == Models.EventNameExtended.CHARGE_READ_CONFIRMATION); // // Remover webhook service.DeleteWebhook(_Client.Credentials.PrivateToken, newWebhookId); // // Remover todos os webhooks webhooks = service.ListWebhooks(_Client.Credentials.PrivateToken); if (webhooks != null && webhooks.Embedded != null && webhooks.Embedded.Webhooks != null) { foreach (var webhook in webhooks.Embedded.Webhooks) { service.DeleteWebhook(_Client.Credentials.PrivateToken, webhook.Id); } } }