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"); }
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); } }
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; } }