/// <summary>
        /// Get an extension from a media type. (Eg. audio/mpeg -&gt; mp3).
        /// </summary>
        /// <param name="mediaType">
        /// The media type.
        /// </param>
        /// <param name="mediaTypeGroup">
        /// Restrict to a particular media Type Group.
        /// </param>
        /// <returns>
        /// File extension based on media type.
        /// </returns>
        public static string GetExtension(string mediaType, MediaTypeGroup mediaTypeGroup)
        {
            mediaType = CanonicaliseMediaType(mediaType);

            string ext;

            if (mediaTypeGroup == MediaTypeGroup.Any || mediaTypeGroup == MediaTypeGroup.Unknown)
            {
                ext = Mapping.Where(m => m.MediaType == mediaType).Select(i => i.Extension).FirstOrDefault();
            }
            else
            {
                ext =
                    Mapping.Where(m => m.MediaType == mediaType && m.Group == mediaTypeGroup).Select(i => i.Extension).
                    FirstOrDefault();
            }

            if (string.IsNullOrEmpty(ext))
            {
                ext = ExtUnknown;
            }

            ext = CanonicaliseExtension(ext);
            return(ext);
        }
        /// <summary>
        /// Get media type from extension (can be dangerous, as file content is not considered).
        /// </summary>
        /// <param name="extension">
        /// File Extension.
        /// </param>
        /// <param name="mediaTypeGroup">
        /// Restrict to a particular media Type Group.
        /// </param>
        /// <returns>
        /// media type based on extension.
        /// </returns>
        public static string GetMediaType(string extension, MediaTypeGroup mediaTypeGroup)
        {
            extension = CanonicaliseExtension(extension);

            string mediaType;

            if (mediaTypeGroup == MediaTypeGroup.Any || mediaTypeGroup == MediaTypeGroup.Unknown)
            {
                mediaType = Mapping.Where(m => m.Extension == extension).Select(i => i.MediaType).FirstOrDefault();
            }
            else
            {
                mediaType =
                    Mapping.Where(m => m.Extension == extension && m.Group == mediaTypeGroup).Select(i => i.MediaType).
                    FirstOrDefault();
            }

            if (string.IsNullOrEmpty(mediaType))
            {
                mediaType = MediaTypeBin;
            }

            mediaType = CanonicaliseMediaType(mediaType);
            return(mediaType);
        }
示例#3
0
 public MediaType(string extension, string contentType, MediaTypeGroup mediaTypeGroup)
 {
     _extension = extension;
     _contentType = contentType;
     _medieTypeClass = mediaTypeGroup;
 }
        private IPictureService SelectService(MediaTypeGroup mediaGroup)
        {
            // will select a service to use
            if (PictureService == null) return null;

            switch (mediaGroup)
            {
                case MediaTypeGroup.PICTURE:
                    return PictureService;

                case MediaTypeGroup.VIDEO:
                    return VideoService;

                case MediaTypeGroup.AUDIO:
                    return AudioService;

                case MediaTypeGroup.DOCUMENT:
                    return DocumentService;

                case MediaTypeGroup.ALL: // not a valid thing to ask for
                default:
                    return null;
            }
        }
        public string GetFileFilter(MediaTypeGroup mediaGroup)
        {
            bool first = true;
            string filterFormat = "{0} ({1})|{1}";
            string unnamedFormat = Localization.XmlBasedResourceManager.GetString("{0} files");
            string extFormat = "*.{0}";
            StringBuilder sb = new StringBuilder();
            if (mediaGroup == MediaTypeGroup.ALL)
            {
                MediaTypeGroup[] groups = {
                                             MediaTypeGroup.PICTURE,
                                             MediaTypeGroup.VIDEO,
                                             MediaTypeGroup.AUDIO,
                                             MediaTypeGroup.DOCUMENT
                                   };
                Dictionary<MediaTypeGroup, string> descriptions = new Dictionary<MediaTypeGroup,string>(4);
                descriptions.Add(MediaTypeGroup.PICTURE, Localization.XmlBasedResourceManager.GetString("Pictures"));
                descriptions.Add(MediaTypeGroup.VIDEO, Localization.XmlBasedResourceManager.GetString("Videos"));
                descriptions.Add(MediaTypeGroup.AUDIO, Localization.XmlBasedResourceManager.GetString("Audio Files"));
                descriptions.Add(MediaTypeGroup.DOCUMENT, Localization.XmlBasedResourceManager.GetString("Other Documents"));

                // Aggregate file types for each MediaTypeGroup
                foreach (MediaTypeGroup group in groups)
                {
                    StringBuilder groupExtensions = new StringBuilder();
                    IPictureService srv = SelectService(group);
                    first = true;
                    if (srv != null)
                        foreach (MediaType r in srv.FileTypes)
                            if (r.MediaGroup == group)
                            {
                                if (first)
                                    first = false;
                                else
                                    groupExtensions.Append(",");
                                groupExtensions.Append(string.Format(extFormat, r.Extension));
                            }
                    if (groupExtensions.Length > 0)
                    {
                        if (sb.Length > 0)
                            sb.Append("|");
                        sb.Append(string.Format(filterFormat, descriptions[group], groupExtensions.ToString()));
                    }
                }
                // Now get individual file types
                foreach (MediaTypeGroup group in groups)
                {
                    string filter = GetFileFilter(group);
                    if (sb.Length > 0 && !string.IsNullOrEmpty(filter))
                        sb.Append("|");
                    sb.Append(filter);
                }
                return sb.ToString();
            }
            else
            {
                IPictureService Service = SelectService(mediaGroup);
                if (Service == null) return string.Empty;
                foreach (MediaType type in Service.FileTypes)
                {
                    if (type.MediaGroup != mediaGroup)
                    {
                        continue;
                    }

                    if (first)
                        first = false;
                    else
                        sb.Append("|");

                    sb.Append(string.Format(filterFormat, string.Format(unnamedFormat, type.Extension), string.Format(extFormat, type.Extension)));

                }
                return sb.ToString();
            }
        }
 public bool CanUpload(MediaTypeGroup mediaGroup)
 {
     return (SelectService(mediaGroup) != null);
 }
        public string FileFilter(MediaTypeGroup mediaGroup)
        {

            bool first = true;
            string filterFormat = "{0} files (*.{0})|*.{0}";
            StringBuilder sb = new StringBuilder();
            foreach (MediaType type in API_FILETYPES)
            {
                if (type.MediaGroup != mediaGroup && mediaGroup != MediaTypeGroup.ALL)
                {
                    continue;
                }
                
                if (first)
                {
                   
                    first = false;
                }
                else
                {
                    sb.Append("|");
                }
                sb.Append(string.Format(filterFormat, type.Extension));

            }
            return sb.ToString();
            
        }
        /// <summary>
        /// Check if a media type is recognised.
        /// </summary>
        /// <param name="mediaType">
        /// The media type.
        /// </param>
        /// <param name="mediaTypeGroup">
        /// Restrict to a particular media Type Group.
        /// </param>
        /// <returns>
        /// True if media type is recognised, otherwise false.
        /// </returns>
        public static bool IsMediaTypeRecognised(string mediaType, MediaTypeGroup mediaTypeGroup)
        {
            var ext = GetExtension(mediaType, mediaTypeGroup);

            return(ext != ExtUnknown);
        }
        /// <summary>
        /// Check if a File extension is recognised.
        /// </summary>
        /// <param name="extension">
        /// The extension.
        /// </param>
        /// <param name="mediaTypeGroup">
        /// Restrict to a particular media Type Group.
        /// </param>
        /// <returns>
        /// True if file extension is recognised, otherwise false.
        /// </returns>
        public static bool IsFileExtRecognised(string extension, MediaTypeGroup mediaTypeGroup)
        {
            var mediaType = GetMediaType(extension, mediaTypeGroup);

            return(mediaType != MediaTypeBin);
        }
示例#10
0
        /// <summary>
        /// Use a imageId to retrieve and save a thumbnail to the device.
        /// </summary>
        /// <param name="imageId">Id for the image</param>
        /// <returns></returns>
        private string RetrievePicture(string imageId, MediaTypeGroup type)
        {
            try
            {
                string url = "";
                if (type == MediaTypeGroup.VIDEO)
                {
                    url = string.Format("http://vid.pikchur.com/vid_{0}_l.jpg", imageId);
                }
                else
                {
                    url = string.Format("http://img.pikchur.com/pic_{0}_l.jpg", imageId);
                }

                HttpWebRequest myRequest = WebRequestFactory.CreateHttpRequest(url);
                myRequest.Method = "GET";
                String pictureFileName = String.Empty;

                using (HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse())
                {
                    using (Stream dataStream = response.GetResponseStream())
                    {
                        int totalSize = 0;
                        int totalResponseSize = (int)response.ContentLength;
                        byte[] readBuffer = new byte[PT_READ_BUFFER_SIZE];
                        pictureFileName = GetPicturePath(imageId);

                        int responseSize = dataStream.Read(readBuffer, 0, PT_READ_BUFFER_SIZE);
                        totalSize = responseSize;
                        OnDownloadPart(new PictureServiceEventArgs(responseSize, totalSize, totalResponseSize));
                        while (responseSize > 0)
                        {
                            SavePicture(pictureFileName, readBuffer, responseSize);
                            try
                            {
                                totalSize += responseSize;
                                responseSize = dataStream.Read(readBuffer, 0, PT_READ_BUFFER_SIZE);
                                OnDownloadPart(new PictureServiceEventArgs(responseSize, totalSize, totalResponseSize));
                            }
                            catch
                            {
                                responseSize = 0;
                            }
                            System.Threading.Thread.Sleep(100);
                        }
                        dataStream.Close();
                    }
                    response.Close();
                }

                return pictureFileName;
            }
            catch (Exception)
            {
                OnErrorOccured(new PictureServiceEventArgs(PictureServiceErrorLevel.Failed, string.Empty, API_ERROR_DOWNLOAD));
                return string.Empty;
            }
        }