public static FileDataTypesEnum MapFileDataTypeUri(string fileUri)
        {
            FileDataTypesEnum fileDataType = FileDataTypesEnum.unknown;

            bool found = false;

            foreach (string dataType in _fileDataTypes)
            {
                string dataTypePattern = $@"(\.|_)(?<fileType>{dataType})s?(\.|_|-)";

                if (Regex.IsMatch(fileUri, dataTypePattern, RegexOptions.IgnoreCase))
                {
                    Match match = Regex.Match(fileUri, dataTypePattern, RegexOptions.IgnoreCase);
                    fileDataType = (FileDataTypesEnum)Enum.Parse(typeof(FileDataTypesEnum), dataType);
                    found        = true;
                    break;
                }
            }

            if (!found)
            {
                foreach (string dataType in _fileDataTypes)
                {
                    string dataTypePattern = $@"(\\|/)(?<fileType>{dataType})s?(\\|/|-|_)";

                    if (Regex.IsMatch(fileUri, dataTypePattern, RegexOptions.IgnoreCase))
                    {
                        Match match = Regex.Match(fileUri, dataTypePattern, RegexOptions.IgnoreCase);
                        fileDataType = (FileDataTypesEnum)Enum.Parse(typeof(FileDataTypesEnum), dataType);
                        found        = true;
                        break;
                    }
                }
            }

            if (!found)
            {
                // try by just file extension
                fileDataType = MapFileDataTypeExtension(fileUri);
            }

            if (fileDataType == FileDataTypesEnum.unknown)
            {
                Log.Warning($"unable to determine datatypepattern:{fileUri} using values:{string.Join(",", _fileDataTypes)}");
            }

            Log.Debug($"returning FileDataTypesEnum.{fileDataType.ToString()}");
            return(fileDataType);
        }
        public static FileDataTypesEnum MapFileDataTypeExtension(string fileUri)
        {
            FileDataTypesEnum extension = FileDataTypesEnum.unknown;

            switch (Path.GetExtension(fileUri.ToLower()))
            {
            case Constants.PerfCsvExtension:
            case Constants.PerfCtrExtension:
            {
                extension = FileDataTypesEnum.counter;
                break;
            }

            case Constants.TableExtension:
            {
                extension = FileDataTypesEnum.table;
                break;
            }

            case Constants.DumpExtension:
            {
                extension = FileDataTypesEnum.fabriccrashdumps;
                break;
            }

            case Constants.TraceZipExtension:
            case Constants.TraceFileExtension:
            {
                // using default fabric / lease
                extension = FileDataTypesEnum.fabric;
                break;
            }

            case Constants.SetupExtension:
            {
                // using default fabricsetup / fabricdeployer
                extension = FileDataTypesEnum.fabricsetup;
                break;
            }

            case Constants.ZipExtension:
            {
                // todo: implement
                extension = FileDataTypesEnum.unknown;
                break;
            }

            case Constants.JsonExtension:
            {
                // todo: implement
                extension = FileDataTypesEnum.unknown;
                break;
            }

            case Constants.EtlExtension:
            {
                // todo: implement
                extension = FileDataTypesEnum.unknown;
                break;
            }

            case Constants.CsvExtension:
            {
                // todo: implement
                extension = FileDataTypesEnum.unknown;
                break;
            }

            default:
            {
                extension = FileDataTypesEnum.unknown;
                break;
            }
            }

            Log.Debug($"returning {extension}");
            return(extension);
        }