Ejemplo n.º 1
0
        private static IEnumerable <MultipartFormParameter> BuildParameters(string fileName, ConverterType target)
        {
            string fromName = Path.GetExtension(fileName).Substring(1);

            if (Enum.TryParse <ConverterType>(fromName, true, out var from))
            {
                return(MultipartFormParameter.ApiParameter(from, target, null, null));
            }
            throw new InvalidDataException("Could not determine import file type");
        }
Ejemplo n.º 2
0
        public async Task <string> Convert(IWorkspace workspace, CancelToken cancelToken)
        {
            string temp     = IOUtility.GetHashFile(workspace.FileSystem.Directory, workspace.Item.FullName);
            var    settings = Settings.Default;

            if (settings.UseOfflineCompiler)
            {
                return(PandocUtility.Compile(temp, workspace.Item.FullName, settings.LocalTemplate, settings.LocalCsl, "*.md"));
            }
            else
            {
                var bytes = await workspace.ConverterService.Convert(MultipartFormParameter
                                                                     .ApiParameter(ConverterType.Markdown, ConverterType.Pdf, settings.Template, settings.Csl)
                                                                     .Concat(MultipartFormParameter
                                                                             .FromWorkspace(workspace)), cancelToken);

                await IOUtility.WriteAllBytes(temp, workspace.FileSystem.File, bytes);

                return(temp);
            }
        }
Ejemplo n.º 3
0
        private static async Task ImportFile(WorkspaceViewModel workspace, string fileName, ConverterType target)
        {
            string targetFileName = Path.GetFileNameWithoutExtension(fileName) + target.GetExtension();

            targetFileName = Path.Combine(workspace.Item.RelativeName, targetFileName);
            string from = Path.GetExtension(fileName);

            if (string.IsNullOrEmpty(from))
            {
                throw new InvalidDataException("Could not determine import file type");
            }
            string url = WebUtility.BuildConvertUrl();

            using (var req = await WebUtility.PostRequest(url, BuildParameters(fileName, target).Concat(MultipartFormParameter.CreateFile("content", fileName))))
            {
                byte[] content = await req.Content.ReadAsByteArrayAsync();

                var item = await workspace.Item.Data.CreateNewFile(targetFileName, null, content);

                var itemViewModel = workspace.Item.AddChild(item);
                workspace.SelectedItem = itemViewModel;
            }
        }