Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        /// <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));
        }
Exemplo n.º 4
0
        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);
        }