示例#1
0
        public async Task GetGalleryTopicItemAsync_WithTopicIdNull_ThrowsNewArgumentNullException()
        {
            var client   = new ImgurClient("123", "1234");
            var endpoint = new TopicEndpoint(client);

            var exception =
                await
                Record.ExceptionAsync(
                    async() => await endpoint.GetGalleryTopicItemAsync("XyZ", null).ConfigureAwait(false))
                .ConfigureAwait(false);

            Assert.NotNull(exception);
            Assert.IsType <ArgumentNullException>(exception);
        }
示例#2
0
        public async Task GetGalleryTopicItemAsync_NotNull()
        {
            var mockUrl      = "https://api.imgur.com/3/topics/Current_Events/xyZ";
            var mockResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(MockTopicEndpointResponses.GetGalleryTopicItem)
            };

            var client   = new ImgurClient("123", "1234");
            var endpoint = new TopicEndpoint(client, new HttpClient(new MockHttpMessageHandler(mockUrl, mockResponse)));
            var item     = await endpoint.GetGalleryTopicItemAsync("xyZ", "Current Events").ConfigureAwait(false);

            Assert.NotNull(item);
        }
示例#3
0
        public async Task GetGalleryTopicItemsAsync_True()
        {
            var mockUrl      = "https://api.imgur.com/3/topics/Current_Events/top/day/3";
            var mockResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(MockTopicEndpointResponses.GetGalleryTopicItems)
            };

            var client   = new ImgurClient("123", "1234");
            var endpoint = new TopicEndpoint(client, new HttpClient(new MockHttpMessageHandler(mockUrl, mockResponse)));
            var items    =
                await
                endpoint.GetGalleryTopicItemsAsync("Current Events", CustomGallerySortOrder.Top, TimeWindow.Day, 3)
                .ConfigureAwait(false);

            Assert.True(items.Any());
        }
示例#4
0
        public async Task GetDefaultTopicsAsync_True()
        {
            var mockUrl      = "https://api.imgur.com/3/topics/defaults";
            var mockResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(MockTopicEndpointResponses.GetDefaultTopics)
            };

            var client   = new ImgurClient("123", "1234");
            var endpoint = new TopicEndpoint(client, new HttpClient(new MockHttpMessageHandler(mockUrl, mockResponse)));
            var topics   = await endpoint.GetDefaultTopicsAsync().ConfigureAwait(false);

            var topic = topics.FirstOrDefault();

            Assert.NotNull(topic);
            Assert.NotNull(topic.TopPost);
            Assert.NotNull(topic.HeroImage);
        }
示例#5
0
        public override async Task <DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default)
        {
            string topicKey      = TopicKey.GetValue(dc.State);
            string endpoint      = TopicEndpoint.GetValue(dc.State);
            string topicHostname = new Uri(endpoint).DnsSafeHost;
            string eventType     = EventType.GetValue(dc.State);
            object eventData     = EventData.GetValue(dc.State);
            string eventSubject  = Subject.GetValue(dc.State);

            TopicCredentials topicCredentials = new TopicCredentials(topicKey);
            EventGridClient  client           = new EventGridClient(topicCredentials);

            var events = new List <EventGridEvent>()
            {
                new EventGridEvent()
                {
                    Id          = Guid.NewGuid().ToString(),
                    EventType   = eventType,
                    Data        = eventData,
                    EventTime   = DateTime.Now,
                    Subject     = eventSubject,
                    DataVersion = "2.0"
                }
            };

            await client.PublishEventsAsync(topicHostname, events, cancellationToken);

            await dc.Context.TraceActivityAsync(nameof(PublishEventGridEvent), label : "Event Grid events published",
                                                value : new
            {
                TopicHostname = topicHostname,
                Endpoint      = endpoint,
                Events        = events,
            });

            return(await dc.EndDialogAsync(cancellationToken : cancellationToken));
        }