///<Summary>
        /// ConvertFile method
        ///</Summary>
        public Response ConvertFile(string fileName, string folderName, string outputType)
        {
            var pathProcessor = new PathProcessor(folderName, fileName, fileName != null);

            var result = Conversion(
                pathProcessor.DefaultSourceFile,
                pathProcessor.OutFolder, outputType

                );
            FileSafeResult fileSafeResult = new FileSafeResult();

            if (result == null)
            {
                fileSafeResult = pathProcessor.GetResultZipped();
            }
            else
            {
                fileSafeResult = pathProcessor.GetResult(Path.GetFileName(result));
            }

            return(new Response
            {
                FileName = fileSafeResult.FileName,
                FolderName = fileSafeResult.id,
                Status = "OK",
                StatusCode = 200,
            });
        }
        /// <summary>
        /// Parse from file with specified upload id and file name, extract text and media into separate files.
        /// If file name not specified, parse all files in folder.
        /// Returns details about resulted zip file.
        /// </summary>
        /// <param name="id">Upload id/</param>
        /// <param name="file">File name.</param>
        /// <returns>Resulted file details.</returns>

        public FileSafeResult Parser(string id, string file)
        {
            var           pathProcessor = new PathProcessor(id, file, file != null);
            SlidesService slidesService = new SlidesService();

            slidesService.Parser(
                pathProcessor.OutFolder,
                file != null
                                                        ? pathProcessor.DefaultSourceFile
                                                        : pathProcessor.SourceFolder
                );
            return(pathProcessor.GetResultZipped());
        }
        /// <summary>
        /// Removes annotations from file with specified upload id and file name, extract annotations into file.
        /// Returns details about resulted zip file.
        /// </summary>
        /// <param name="id">Upload id/</param>
        /// <param name="file">File name.</param>
        /// <returns>Resulted file details.</returns>

        public FileSafeResult RemoveAnnotations(string id, string file)
        {
            var           pathProcessor   = new PathProcessor(id, file: file, checkDefaultSourceFileExistence: true);
            var           annotationsFile = pathProcessor.GetOutFilePath("comments.txt");
            SlidesService slidesService   = new SlidesService();
            var           commentaries    = slidesService.RemoveAnnotations(
                pathProcessor.DefaultSourceFile,
                pathProcessor.DefaultOutFile
                );

            //System.IO.File.WriteAllLines(annotationsFile, commentaries );

            return(pathProcessor.GetResultZipped());
        }
        /// <summary>
        /// Splits presentation to parts and saves each part to the specified format.
        /// </summary>
        /// <param name="model">The request model</param>
        /// <returns>The resulting file archive.</returns>

        public FileSafeResult Splitter([FromBody] SplitterRequestModel model,

                                       CancellationToken cancellationToken = default(CancellationToken)

                                       )
        {
            var           pathProcessor = new PathProcessor(model.id, model.FileName, true);
            SlidesService slidesService = new SlidesService();

            slidesService.Split(pathProcessor.DefaultSourceFile,
                                Path.GetDirectoryName(pathProcessor.DefaultOutFile),
                                model.Format.ParseEnum <SlidesConversionFormat>(),
                                model.SplitType,
                                model.SplitNumber, model.SplitRange, cancellationToken);

            return(pathProcessor.GetResultZipped());
        }
        /// <summary>
        /// Converts source file with specified upload id and file name into target format.
        /// Returns details about resulted file.
        /// </summary>
        /// <param name="model">Request model.</param>
        /// <returns>Resulted file details.</returns>
        public FileSafeResult Conversion([FromBody] ConversionOptions model)
        {
            SlidesService slidesService = new SlidesService();

            var pathProcessor = new PathProcessor(model.id, model.FileName, model.FileName != null);
            var result        = slidesService.ConvertFile(
                pathProcessor.DefaultSourceFile,
                pathProcessor.OutFolder,
                model.Format.ParseEnum <SlidesConversionFormat>()
                );

            if (result == null)
            {
                return(pathProcessor.GetResultZipped());
            }
            else
            {
                return(pathProcessor.GetResult(Path.GetFileName(result)));
            }
        }