public static MediaFileBaseModel NewMediaFileFromMediaType(string mediaType, string fileName)
        {
            MediaFileBaseModel mediafile = null;

            switch (mediaType)
            {
            case "image":
            case "Images":
                mediafile = new ImageFileModel();
                break;

            case "Original":
            case "audio":
            case "video":
                mediafile = new AuViFileModel();
                break;

            case "Final":
                mediafile = new FinalAvFileModel();
                break;

            default:
                mediafile = new OtherFileModel();
                break;
            }

            mediafile.fileName = fileName;
            mediafile.path     = $"{mediafile.fileType}/{mediafile.fileName}";

            return(mediafile);
        }
        public DirectUploadModel getNewImageId([FromQuery] string fileType, [FromQuery] string fileName, [FromQuery] string folderpath, [FromQuery] bool createSignedURL = false)
        {
            if (string.IsNullOrWhiteSpace(fileType))
            {
                throw new ArgumentNullException("fileType");
            }

            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentNullException("fileName");
            }

            if (string.IsNullOrWhiteSpace(folderpath))
            {
                throw new ArgumentNullException("folderpath");
            }


            fileName = _filenameRegex.Replace(fileName, "_");

            var orgFolderPath = folderpath = _pathRegex.Replace(folderpath, "_");

            if (!folderpath.StartsWith(_mediaLocations.articlesRoot))
            {
                folderpath = $"{_mediaLocations.articlesRoot}/{folderpath}";
            }

            /*
             * fileName = fileName.Replace(' ', '_');
             * fileName = string.Join("_", fileName.Split(Path.GetInvalidFileNameChars()));
             *
             * folderpath = folderpath.Replace(' ', '_');
             * folderpath = string.Join("_", folderpath.Split(Path.GetInvalidPathChars()));
             */

            var mediafile2 = MediaFileBaseModel.mediaObjectFromMimeType(fileType, fileName);


            var ret = new DirectUploadModel
            {
                mediaFile  = mediafile2,
                config     = _storage.uploadConfig,
                rootFolder = folderpath
            };


            var storageKey = StorageService.getStorageKey($"{folderpath}/{mediafile2.path}");

            _logger.LogDebug($"newPageidForUploadAsync: new page {storageKey.bucket}:{storageKey.key}");

            ret.config.bucket = storageKey.bucket;


            if (createSignedURL)
            {
                if (!string.IsNullOrWhiteSpace(_storage.uploadConfig.customEndpoint))
                {
                    //we are using minio.. set up
                    var origin = this.originFromURL("/api/media");

                    ret.keyForDirectUpload = _storage.createPresignedUrl(storageKey.key, true, origin);
                }
                else
                {
                    ret.keyForDirectUpload = _storage.createPresignedUrl(storageKey.key, true);
                }
            }
            else
            {
                ret.keyForDirectUpload = _storage.keyForDirectUpload(storageKey.key);
            }

            return(ret);
        }