Beispiel #1
0
        public async Task <IActionResult> Post([FromForm] TemplateToken token)
        {
            using (Stream stream = token.File.OpenReadStream())
                using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read)) {
                    if (archive.GetEntry("main.tex") == null)
                    {
                        return(BadRequest("main.tex file missing"));
                    }

                    Template template;
                    try {
                        template = Database.AddTemplate(token, null);
                    } catch (Exception ex) {
                        return(BadRequest(ex.Message));
                    }

                    try {
                        var path = Templates.CreateDirectory(template);
                        foreach (var entry in archive.Entries)
                        {
                            entry.ExtractToFile(Path.Combine(path, entry.FullName));
                        }
                    } catch (Exception ex) {
                        Templates.RemoveTemplate(template);
                        Database.Templates.Remove(template);
                        return(BadRequest(ex.Message));
                    }
                    return(Ok(template));
                }
        }