public PlayerIdProviderResult Provide(string leagueFolderPath, string championName)
        {
            if (string.IsNullOrEmpty(leagueFolderPath))
            {
                throw new PlayerIdProviderException($"Argument: {leagueFolderPath} not specified.");
            }
            if (string.IsNullOrEmpty(championName))
            {
                throw new PlayerIdProviderException($"Argument: {championName} not specified.");
            }

            try
            {
                _logger.Debug("Mapping champion name to playerId.");
                if (string.IsNullOrEmpty(leagueFolderPath))
                {
                    throw new ArgumentNullException(nameof(leagueFolderPath));
                }

                var           logPath          = _inputOutputWrapper.GetFullPath(Path.Combine(leagueFolderPath, LogsBasePath));
                string        date             = DateTime.Now.ToString("yyyy-MM-dd");
                DirectoryInfo currentDirectory = _inputOutputWrapper.GetDirectoryInfo(logPath, $"{date}*");
                string        r3dlog           = _inputOutputWrapper.GetFile(currentDirectory.FullName, LogPattern);
                _logger.Debug($"Log path: {r3dlog}");

                var playersInfo = _inputOutputWrapper.GetLinesContainingMatchingWords(r3dlog, new List <string> {
                    TeamOrder, TeamChaos
                });
                var playerInfo = playersInfo.FirstOrDefault(line => line.Contains(championName));
                if (playerInfo == null)
                {
                    throw new ArgumentNullException($"Champion: {championName} not found in r3dlog.txt file");
                }

                string playerIdRegex = PlayerIdOrderPattern;
                var    playerIdMatch = Regex.Match(playerInfo, playerIdRegex);
                if (playerIdMatch.Success)
                {
                    _logger.Debug($"Player Id: {playerIdMatch.Value}, Team: Order");
                    return(new PlayerIdProviderResult
                    {
                        Id = playerIdMatch.Value,
                        Team = TeamChaosOrder.Order
                    });
                }

                playerIdRegex = PlayerIdChaosePattern;
                playerIdMatch = Regex.Match(playerInfo, playerIdRegex);
                if (playerIdMatch.Success)
                {
                    _logger.Debug($"Player Id: {playerIdMatch.Value}, Team: Chaos");
                    return(new PlayerIdProviderResult
                    {
                        Id = playerIdMatch.Value,
                        Team = TeamChaosOrder.Chaos
                    });
                }
            }
            catch (Exception exception)
            {
                throw new PlayerIdProviderException(Error.PlayerIdNotFoundError, exception);
            }

            throw new InvalidDataException(Error.PlayerIdNotFoundError);
        }