public List <string> GetStandardDefaultUrls(DefaultSizeType size, string pattern)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(GetStandardDefaultUrls)}.Start");
            var relativeFolder = "";

            switch (size)
            {
            case DefaultSizeType.Original:
                relativeFolder = _folderConfiguration.Defaults.Originals.GetFullHashPath();
                break;

            case DefaultSizeType.Small:
                relativeFolder = _folderConfiguration.Defaults.Smalls.GetFullHashPath();
                break;

            case DefaultSizeType.Large:
                relativeFolder = _folderConfiguration.Defaults.Larges.GetFullHashPath();
                break;
            }

            var pcPath = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(), relativeFolder);

            if (string.IsNullOrEmpty(pattern))
            {
                return(Directory.GetFiles(pcPath)
                       .Select(x => _fileManager.ChangePcPathToWeb(Path.Combine(relativeFolder, Path.GetFileName(x)))).ToList());
            }
            var result = Directory.GetFiles(pcPath).Where(x => x.Contains(pattern))
                         .Select(x => _fileManager.ChangePcPathToWeb(Path.Combine(relativeFolder, Path.GetFileName(x)))).ToList();

            _logger.LogInformation($"{nameof(MediaService)}.{nameof(GetStandardDefaultUrls)}.End");
            return(result);
        }
        public string CreateRelativeDefaulsPath(string imageName, DefaultSizeType size)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeDefaulsPath)}.Start");
            var name           = Path.GetFileNameWithoutExtension(imageName);
            var ext            = Path.GetExtension(imageName);
            var relativeFolder = "";

            switch (size)
            {
            case DefaultSizeType.Original:
                relativeFolder = _folderConfiguration.Defaults.Originals.GetFullHashPath();
                break;

            case DefaultSizeType.Small:
                relativeFolder = _folderConfiguration.Defaults.Smalls.GetFullHashPath();
                break;

            case DefaultSizeType.Large:
                relativeFolder = _folderConfiguration.Defaults.Larges.GetFullHashPath();
                break;
            }

            var result = Path.Combine(relativeFolder, name + $"_{size.ToString().ToLower()}" + ext);

            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeDefaulsPath)}.End");
            return(result);
        }
        public string ToFullDefaultUrl(string shortOriginalUrl, DefaultSizeType defaultSize)
        {
            if (string.IsNullOrEmpty(shortOriginalUrl))
            {
                return(null);
            }
            if (shortOriginalUrl.Contains(MediaUrl))
            {
                shortOriginalUrl = shortOriginalUrl.Replace(MediaUrl, "");
            }
            var name = Path.GetFileName(shortOriginalUrl);

            shortOriginalUrl = Path.GetDirectoryName(string.Concat(shortOriginalUrl.SkipWhile(x => x == '/')));

            if (defaultSize == DefaultSizeType.Original)
            {
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/") + '/' + name);
            }

            name = name.Replace("original", defaultSize.ToString().ToLower());

            switch (defaultSize)
            {
            case DefaultSizeType.Small:
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/").Replace(new OriginalSizeFolder(null).HashName,
                                                                              new DefaultFolder.SmallDefaultSizeFolder(null).HashName) + '/' + name);

            case DefaultSizeType.Large:
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/").Replace(new OriginalSizeFolder(null).HashName,
                                                                              new DefaultFolder.LargeDefaultSizeFolder(null).HashName) + '/' + name);

            default: throw new Exception($"There is no such default size {defaultSize}");
            }
        }
 public async Task <List <string> > GetStandardDefaultsUrl(DefaultSizeType defaultSize, string pattern)
 {
     try
     {
         _logger.LogInformation($"{nameof(MediaServerConnection)}.{nameof(GetStandardDefaultsUrl)}.Start");
         var body   = JsonConvert.SerializeObject(new { size = (int)defaultSize, pattern = pattern });
         var result = (await MediaServerConnect(_standardDefaultUrl, body)).Urls;
         _logger.LogInformation($"{nameof(MediaServerConnection)}.{nameof(GetStandardDefaultsUrl)}.End");
         return(result);
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, $"{nameof(MediaServerConnection)}.{nameof(GetStandardDefaultsUrl)}");
     }
     return(new List <string>());
 }
        public string CreateRelativeDefaulsPath(string imageName, DefaultSizeType size)
        {
            var name           = Path.GetFileNameWithoutExtension(imageName);
            var ext            = Path.GetExtension(imageName);
            var relativeFolder = "";

            switch (size)
            {
            case DefaultSizeType.Original:
                relativeFolder = _folderConfiguration.Defaults.Originals.GetFullHashPath();
                break;

            case DefaultSizeType.Small:
                relativeFolder = _folderConfiguration.Defaults.Smalls.GetFullHashPath();
                break;

            case DefaultSizeType.Large:
                relativeFolder = _folderConfiguration.Defaults.Larges.GetFullHashPath();
                break;
            }

            return(Path.Combine(relativeFolder, name + $"_{size.ToString().ToLower()}" + ext));
        }