Example #1
0
        public async Task RaiseEvent(SkuMessageType type, IInventoryItem item)
        {
            Console.WriteLine($"Raising event {type} for SKU {item.Sku}...");

            var eventPayload = SkuNotification.Create(type, item);

            var events = new List <EventGridEvent>()
            {
                new EventGridEvent
                {
                    Id          = Guid.NewGuid().ToString(),
                    EventType   = type.ToString(),
                    Data        = eventPayload,
                    EventTime   = DateTime.Now,
                    Subject     = item.Sku,
                    DataVersion = "2.0"
                }
            };
            var topicHostname    = new Uri(endPoint).Host;
            var topicCredentials = new TopicCredentials(key);
            var client           = new EventGridClient(topicCredentials);

            await client.PublishEventsAsync(topicHostname, events);

            Console.WriteLine($"Raised successfully.");
        }
        public static SkuNotification Create(SkuMessageType type, IInventoryItem item)
        {
            switch (type)
            {
            case SkuMessageType.Activated:
                return(new SkuActivated {
                    Sku = item.Sku
                });

            case SkuMessageType.Added:
                return(new SkuAdded {
                    Sku = item.Sku
                });

            case SkuMessageType.DescriptionSet:
                return(new DescriptionSet
                {
                    Sku = item.Sku,
                    Description = item.Description
                });

            case SkuMessageType.ImageSet:
                return(new ImageSet
                {
                    Sku = item.Sku,
                    ImageUrl = item.ImageUrl
                });

            case SkuMessageType.PriceSet:
                return(new PriceSet
                {
                    Sku = item.Sku,
                    Price = item.Price
                });
            }

            return(null);
        }