Exemple #1
0
        public async Task PostBroadcasterConfigAsync_NotFound()
        {
            const int    channelId   = 123;
            const string broadcaster = "broadcaster";

            _Log.Setup(s => s.LogInformation($"Checking that broadcaster '{broadcaster}' exists."));
            const string endpoint        = "https://twitch.tv/users";
            const string clientId        = "kdrgvhidhfskljecsemphgdhdfgfls";
            const string accept          = "application/json";
            var          getUserResponse = new GetUsersResponse {
                Users = new List <User>()
            };

            _TwitchWrapper.Setup(s => s.GetUsers(endpoint, clientId, accept, broadcaster)).ReturnsAsync(getUserResponse);
            var errorMessage = $"Could not find streamer '{broadcaster}'.";

            _Log.Setup(s => s.LogInformation(errorMessage));
            var inputContainer = new BroadcasterConfigContainer();
            var result         = await _Helper.PostBroadcasterConfigAsync(endpoint, clientId, accept, channelId, broadcaster, inputContainer);

            _Log.VerifyAll();
            _TwitchWrapper.VerifyAll();
            _Context.VerifyAll();
            Assert.That(result.ErrorMessage, Is.EqualTo(errorMessage));
            Assert.That(result.ChannelConfigContainer, Is.Null);
        }
Exemple #2
0
        public async Task PostBroadcasterConfigAsync()
        {
            const int    channelId   = 123;
            const string broadcaster = "broadcaster";

            _Log.Setup(s => s.LogInformation($"Checking that broadcaster '{broadcaster}' exists."));
            const string endpoint        = "https://twitch.tv/users";
            const string clientId        = "kdrgvhidhfskljecsemphgdhdfgfls";
            const string accept          = "application/json";
            const string displayName     = "BrOaDcAsTeR";
            var          getUserResponse = new GetUsersResponse {
                Users = new List <User> {
                    new User {
                        DisplayName = displayName
                    }
                }
            };

            _TwitchWrapper.Setup(s => s.GetUsers(endpoint, clientId, accept, broadcaster)).ReturnsAsync(getUserResponse);
            _Log.Setup(s => s.LogInformation($"Found broadcaster '{broadcaster}' with display name '{displayName}'."));
            _Log.Setup(s => s.LogInformation($"Posting broadcaster config for channel '{channelId}' broadcaster '{displayName}'."));
            var inputContainer  = new BroadcasterConfigContainer();
            var outputContainer = new ChannelConfigContainer();

            _Context.Setup(s => s.SetBroadcasterConfigAsync(channelId, displayName, inputContainer)).ReturnsAsync(outputContainer);
            _Log.Setup(s => s.LogInformation($"Posted broadcaster config for channel '{channelId}' broadcaster '{displayName}'."));
            var result = await _Helper.PostBroadcasterConfigAsync(endpoint, clientId, accept, channelId, broadcaster, inputContainer);

            _Log.VerifyAll();
            _TwitchWrapper.VerifyAll();
            _Context.VerifyAll();
            Assert.That(result.ErrorMessage, Is.Null.Or.Empty);
            Assert.That(result.ChannelConfigContainer, Is.EqualTo(outputContainer));
        }
Exemple #3
0
        public void BuildStreamersText_SomeStreamers()
        {
            _ConfigWrapper.Setup(s => s.GetValue <bool>("EnableNumberOfClipsPerDay")).Returns(true);
            var broadcaster1 = new BroadcasterConfigContainer {
                Broadcaster = "broadcaster123"
            };
            var broadcaster2 = new BroadcasterConfigContainer {
                Broadcaster = "anotherstreamer", NumberOfClipsPerDay = 4
            };
            var broadcaster3 = new BroadcasterConfigContainer {
                Broadcaster = "omegalulmydude"
            };
            var broadcaster4 = new BroadcasterConfigContainer {
                Broadcaster = "zzzzzzzzzzz", NumberOfClipsPerDay = 1
            };
            var broadcasters = new List <BroadcasterConfigContainer> {
                broadcaster1, broadcaster2, broadcaster3, broadcaster4
            };
            var container = new ChannelConfigContainer {
                Broadcasters = broadcasters
            };
            const string streamersBegin = "here's your list of streamers";

            _ConfigWrapper.Setup(s => s["StreamersFieldBeginText"]).Returns(streamersBegin);
            const string newLineDelimiter = "NEWLINE";

            _ConfigWrapper.Setup(s => s["NewLineDelimiter"]).Returns(newLineDelimiter);
            var streamerFormats = new List <string> {
                "```lessNEWLINE{0}```", "```diffNEWLINE{0}```", "```fixNEWLINE{0}```"
            };

            _ConfigWrapper.Setup(s => s.Get <List <string> >("StreamersFormats")).Returns(streamerFormats);
            var result = _TopClipsModuleHelper.BuildStreamersText(container);

            _ConfigWrapper.VerifyAll();
            const string expectedResult =
                "here's your list of streamers" +
                "```less\nanotherstreamer, 4 clips per day, any view count```" +
                "```diff\nbroadcaster123, no limit, any view count```" +
                "```fix\nomegalulmydude, no limit, any view count```" +
                "```less\nzzzzzzzzzzz, 1 clip per day, any view count```";

            Assert.That(result, Is.EqualTo(expectedResult));
        }
Exemple #4
0
        public async Task <PostBroadcasterConfigResponse> PostBroadcasterConfigAsync(string endpoint, string clientId, string accept, decimal channelId, string broadcaster, BroadcasterConfigContainer container)
        {
            _Log.LogInformation($"Checking that broadcaster '{broadcaster}' exists.");
            var userResponse = await _TwitchWrapper.GetUsers(endpoint, clientId, accept, broadcaster);

            if (!userResponse.Users.Any())
            {
                var errorMessage = $"Could not find streamer '{broadcaster}'.";
                _Log.LogInformation(errorMessage);
                return(new PostBroadcasterConfigResponse(errorMessage));
            }
            var displayName = userResponse.Users[0].DisplayName;

            _Log.LogInformation($"Found broadcaster '{broadcaster}' with display name '{displayName}'.");
            _Log.LogInformation($"Posting broadcaster config for channel '{channelId}' broadcaster '{displayName}'.");
            var result = await _Context.SetBroadcasterConfigAsync(channelId, displayName, container);

            _Log.LogInformation($"Posted broadcaster config for channel '{channelId}' broadcaster '{displayName}'.");
            return(new PostBroadcasterConfigResponse(result));
        }
Exemple #5
0
        public async Task Of(string broadcaster, int?input = null, [Remainder] string option = null)
        {
            var match = await _FunctionWrapper.GetBroadcasterConfigAsync(Context.Channel.Id, broadcaster);

            BroadcasterConfigContainer container;
            var enableNumberOfClipsPerDay = _ConfigWrapper.GetValue <bool>("EnableNumberOfClipsPerDay");

            if (!enableNumberOfClipsPerDay) //default to min views logic
            {
                container = ContainerFromMinViews();
            }
            else if (string.IsNullOrEmpty(option)) //no default to assume, just return
            {
                return;
            }
            else
            {
                switch (option.ToLower())
                {
                case "clips":
                case "clips per day":
                    if (input.HasValue && input.Value > 0)
                    {
                        container = match.FromClipsPerDay(input);
                    }
                    else
                    {
                        container = match.FromClipsPerDay(null);
                    }
                    break;

                case "views":
                case "min views":
                    container = ContainerFromMinViews();
                    break;

                default:
                    container = new BroadcasterConfigContainer
                    {
                        ChannelId   = Context.Channel.Id,
                        Broadcaster = broadcaster
                    };
                    break;
                }
            }
            BroadcasterConfigContainer ContainerFromMinViews()
            {
                if (input.HasValue && input.Value > 0)
                {
                    return(match.FromMinViews(input));
                }
                return(match.FromMinViews(null));
            }

            var result = await _FunctionWrapper.PostBroadcasterConfigAsync(Context.Channel.Id, broadcaster, container);

            if (!string.IsNullOrEmpty(result.ErrorMessage))
            {
                await ReplyAsync(message : result.ErrorMessage);
            }
            else
            {
                await ReplyAsync(result.ChannelConfigContainer);
            }
        }
        public async Task <PostBroadcasterConfigResponse> PostBroadcasterConfigAsync(decimal channelId, string broadcaster, BroadcasterConfigContainer container)
        {
            var requestUri = string.Format(_BroadcasterConfigEndpointFormat, channelId, broadcaster);
            var response   = await _HttpClient.PostObjectWithHeaderAsync(requestUri, container, _FunctionsKeyHeaderName, _PostBroadcasterConfigFunctionKey);

            if (!response.IsSuccessStatusCode)
            {
                throw new FunctionHelperException($"Error posting broadcaster config for channel '{channelId}' broadcaster '{broadcaster}'. Status code '{response.StatusCode.ToString()}'. Reason phrase '{response.ReasonPhrase}'.");
            }
            var content = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <PostBroadcasterConfigResponse>(content));
        }