Beispiel #1
0
        public string CreateDocument(string name)
        {
            string docId;

            lock (lockObject)
            {
                while (true)
                {
                    docId = ShortIdGenerator.Next();
                    if (docs.Exists(x => x.DocId == docId))
                    {
                        continue;
                    }
                    if (File.Exists(getDocFileName(docId)))
                    {
                        continue;
                    }
                    break;
                }
                var newDoc = new Document(docId, name);
                docs.Add(newDoc);
                newDoc.SaveToFile(getDocFileName(docId));
            }
            return(docId);
        }
Beispiel #2
0
 public void Login(string secret, out string sessionId, out DateTime sessionExpiryUtc)
 {
     sessionId        = null;
     sessionExpiryUtc = DateTime.MinValue;
     lock (sessions)
     {
         HashSet <string> secrets = readSecrets();
         if (!secrets.Contains(secret))
         {
             return;
         }
         sessionId = ShortIdGenerator.Next();
         while (sessions.ContainsKey(sessionId))
         {
             sessionId = ShortIdGenerator.Next();
         }
         sessionExpiryUtc    = DateTime.UtcNow.AddMinutes(sessionTimeoutMin);
         sessions[sessionId] = sessionExpiryUtc;
     }
 }
Beispiel #3
0
        public string RequestSession(string docId)
        {
            string sessionKey = null;

            lock (lockObject)
            {
                ensureDocLoaded(docId);
                if (!docs.Exists(x => x.DocId == docId))
                {
                    return(null);
                }
                while (true)
                {
                    sessionKey = ShortIdGenerator.Next();
                    if (!sessions.Exists(x => x.SessionKey == sessionKey))
                    {
                        break;
                    }
                }
                sessions.Add(new Session(sessionKey, docId));
            }
            return(sessionKey);
        }
Beispiel #4
0
        public async Task <string> ExportDocx(string docId)
        {
            XieChar[] text = null;
            lock (lockObject)
            {
                ensureDocLoaded(docId);
                var doc = docs.Find(x => x.DocId == docId);
                if (doc == null)
                {
                    return(null);
                }
                text = new XieChar[doc.HeadText.Length];
                for (int i = 0; i < text.Length; ++i)
                {
                    text[i] = doc.HeadText[i];
                }
            }
            var exportFileName = docId + "-" + ShortIdGenerator.Next() + ".docx";
            var exportFilePath = Path.Combine(options.ExportsFolder, exportFileName);
            var exporter       = new DocxExporter(composer, text, exportFilePath);
            await exporter.Export();

            return(exportFileName);
        }