/// <summary> /// Gets the web dav URL by WebDavTicket. /// </summary> /// <param name="ticket">The ticket.</param> /// <returns></returns> public static string GetWebDavUrl(string ticket) { string retVal = string.Empty; WebDavTicket webDavTicket = WebDavTicket.Parse(ticket); //Попытаемся определить имя файла if (String.IsNullOrEmpty(webDavTicket.AbsolutePath.FileName)) { if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_FileStorage) { FileStorageAbsolutePath fsAbsPath = webDavTicket.AbsolutePath as FileStorageAbsolutePath; if (fsAbsPath != null) { FileStorage fs = new FileStorage(); Mediachase.IBN.Business.ControlSystem.FileInfo fileInfo = fs.GetFile(fsAbsPath.UniqueId); if (fileInfo != null) { webDavTicket.AbsolutePath.FileName = fileInfo.Name; } } } else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_MetaData) { MetaDataAbsolutePath mdAbsPath = webDavTicket.AbsolutePath as MetaDataAbsolutePath; if (mdAbsPath != null) { Mediachase.Ibn.Data.Meta.FileInfo fileInfo = new Mediachase.Ibn.Data.Meta.FileInfo(mdAbsPath.FileUID); webDavTicket.AbsolutePath.FileName = fileInfo.Name; } } else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_MetaDataPlus) { MetaDataPlusAbsolutePath mdpAbsPath = webDavTicket.AbsolutePath as MetaDataPlusAbsolutePath; if (mdpAbsPath != null) { Mediachase.MetaDataPlus.MetaObject obj = MetaDataWrapper.LoadMetaObject(mdpAbsPath.MetaObjectId, mdpAbsPath.MetaObjectType); MetaFile mf = obj[mdpAbsPath.MetaFieldName] as MetaFile; if (mf != null) { webDavTicket.AbsolutePath.FileName = mf.Name; } } } else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_Incident) { EmailStorageAbsolutePath emlAbsPath = webDavTicket.AbsolutePath as EmailStorageAbsolutePath; if (emlAbsPath != null) { EMailMessageInfo emlInfo = EMailMessageInfo.Load(emlAbsPath.EmailMsgId); AttachmentInfo attachInfo = emlInfo.Attachments[emlAbsPath.EmailAttachmentIndex]; webDavTicket.AbsolutePath.FileName = attachInfo.FileName; } } } retVal = GetWebDavUrl(webDavTicket.AbsolutePath, true); return(retVal); }
public override System.IO.Stream OpenWrite(Mediachase.Net.Wdom.WebDavElementInfo element, long contentLength) { if (element == null || element is CollectionInfo) { return(null); } object[] param = (object[])element.Tag; MetaFile metaFile = (MetaFile)param[1]; MetaObject metaObj = (MetaObject)param[0]; MetaDataPlusAbsolutePath absPath = (MetaDataPlusAbsolutePath)param[2]; return(new MetaFileStream(metaObj, metaFile, absPath.MetaFieldName, contentLength)); }
/// <summary> /// Gets the web dav URL. /// </summary> /// <param name="metaObjectId">The meta object id.</param> /// <param name="metaClassName">Name of the meta class.</param> /// <param name="metaFieldName">Name of the meta field.</param> /// <param name="withAuthToken">if set to <c>true</c> [with auth token].</param> /// <returns></returns> public static string GetMetaDataPlusWebDavUrl(Mediachase.MetaDataPlus.MetaObject mo, string metaField, bool withAuthToken) { MetaFile mf = mo[metaField] as MetaFile; if (mf == null) { throw new ArgumentException(metaField + " is not a MetaFile"); } MetaDataPlusAbsolutePath absPath = (MetaDataPlusAbsolutePath)WebDavAbsolutePath.CreateInstance(ObjectTypes.File_MetaDataPlus); absPath.MetaFieldName = metaField; absPath.MetaObjectId = mo.Id; absPath.MetaObjectType = mo.MetaClass.Name; absPath.UniqueId = mo.Id; absPath.FileName = mf.Name; return(GetWebDavUrl(absPath, withAuthToken)); }
protected virtual ResourceInfo GetResourceInfo(WebDavTicket ticket) { if (ticket == null) { throw new ArgumentNullException("ticket"); } MetaDataPlusAbsolutePath metaAbsPath = ticket.AbsolutePath as MetaDataPlusAbsolutePath; if (metaAbsPath == null) { throw new NullReferenceException("metaAbsPath"); } ResourceInfo retVal = new ResourceInfo(); MetaObject obj = MetaDataWrapper.LoadMetaObject(metaAbsPath.MetaObjectId, metaAbsPath.MetaObjectType); if (obj == null) { throw new NullReferenceException("obj"); } MetaFile metaFile = (MetaFile)obj[metaAbsPath.MetaFieldName]; if (metaFile != null) { retVal.AbsolutePath = ticket.ToString(); retVal.Tag = new object[] { obj, metaFile, metaAbsPath }; retVal.Name = metaFile.Name; retVal.ContentType = ContentTypeResolver.Resolve(Path.GetExtension(metaFile.Name)); retVal.ContentLength = metaFile.Size; retVal.ParentName = "root"; retVal.Modified = metaFile.LastWriteTime; retVal.Created = metaFile.CreationTime; } return(retVal); }