示例#1
0
        /// <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,
            }));
        }
示例#2
0
        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);
                }
            }
        }