private void Load(string data) { _data = data; try { // Load config from XML var xml = XDocument.Parse(data); if (xml.Root.Name.LocalName != "Manifest") { Log.Write("Root XML element '{0}' is not recognized, stopping.", xml.Root.Name); return; } // Set properties. Version = int.Parse(xml.Root.Attribute("version").Value); CheckInterval = int.Parse(xml.Root.Element("CheckInterval").Value); SecurityToken = xml.Root.Element("SecurityToken").Value; //RemoteConfigUri = xml.Root.Element("RemoteConfigUri").Value; BaseFileName = xml.Root.Element("BaseFileName").Value; BaseFileExtension = xml.Root.Element("BaseFileExtension").Value; BaseUri = xml.Root.Element("BaseUri").Value; RemoteConfigUri = BaseUri + BaseFileName.Trim() + (Version + 1).ToString() + BaseFileExtension; Payloads = xml.Root.Elements("Payload").Select(x => x.Value).ToArray(); } catch (Exception ex) { Log.Write("Error: {0}", ex.Message); return; } }
public async System.Threading.Tasks.Task <string> Url(UserAction ua = null) { if (ua == null) { ua = new UserAction(); } // Use discovery to determine endpoint to leverage List <WopiAction> discoData = await WopiUtil.GetDiscoveryInfo(); var fileExt = BaseFileName.Substring(BaseFileName.LastIndexOf('.') + 1).ToLower(); var action = discoData.FirstOrDefault(i => i.name == ua.Action && i.ext == fileExt); if (action != null) { string urlsrc = WopiUtil.GetActionUrl(action, this, ServerUtil.Config().Domain); WopiSecurity wopiSecurity = new WopiSecurity(); var token = wopiSecurity.GenerateToken(id.ToString(), ua.UserId, ua.UserDisplayName); if (action.name == "edit") { token.ReadOnly = false; } else { token.ReadOnly = true; } token.Save(); return(String.Format("{0}&access_token={1}&access_token_ttl={2}", urlsrc, token.Identity, token.ValidTo().Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString())); } else { // This will only hit if the extension isn't supported by WOPI throw new Exception("Bad action on this file."); } }