コード例 #1
0
 private string[] GetMimeTypes()
 {
     return(FileTypeChoices
            .SelectMany(choice => choice.Value)
            .Select(extension => MimeTypeService.GetFromExtension(extension))
            .Distinct()
            .ToArray());
 }
コード例 #2
0
        private string[] GetMimeTypes()
        {
            if (FileTypeFilter.Contains("*"))
            {
                return(new[] { "*/*" });
            }

            return(FileTypeFilter
                   .Select(extension => MimeTypeService.GetFromExtension(extension))
                   .Distinct()
                   .ToArray());
        }
コード例 #3
0
        public void MapFromFileNameWithDefault_WhenContentTypeNotFound_ReturnsDefault()
        {
            string fileName    = "my-file.jpg";
            string contentType = null;

            var contentTypeProvider = new Mock <IContentTypeProvider>();

            contentTypeProvider.Setup(p => p.TryGetContentType(fileName, out contentType)).Returns(false);
            var service = new MimeTypeService(contentTypeProvider.Object);

            var result = service.MapFromFileName(fileName, TEST_DEFAULT_MIME_TYPE);

            Assert.Equal(TEST_DEFAULT_MIME_TYPE, result);
        }
コード例 #4
0
        public void MapFromFileName_WhenContentTypeFound_ReturnsMatch()
        {
            string fileName    = "my-file.jpg";
            string contentType = JPEG_MIME_TYPE;

            var contentTypeProvider = new Mock <IContentTypeProvider>();

            contentTypeProvider.Setup(p => p.TryGetContentType(fileName, out contentType)).Returns(true);
            var service = new MimeTypeService(contentTypeProvider.Object);

            var result = service.MapFromFileName(fileName);

            Assert.Equal(contentType, result);
        }
コード例 #5
0
        public override Task Invoke(IOwinContext context)
        {
            Trace.WriteLine("Invoke DefaultMiddleware");

            var path = FileSystem.MapPath(_options.BasePath, context.Request.Path.Value);

            context.Response.StatusCode  = 200;
            context.Response.ContentType = MimeTypeService.GetMimeType(Path.GetExtension(path));

            using (var inputStream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                StreamHandler.CopyStream(context.Response.Body, inputStream);
            }

            return(Globals.CompletedTask);
        }
コード例 #6
0
        private NativeFilePickerAcceptType[] BuildFileTypesMap()
        {
            var acceptTypes = new List <NativeFilePickerAcceptType>();

            var mimeTypeGroups = FileTypeFilter
                                 .Except(new[] { "*" })
                                 .GroupBy(f => MimeTypeService.GetFromExtension(f))
                                 .ToArray();

            var allAccepts = new List <NativeFilePickerAcceptTypeItem>();

            foreach (var mimeTypeGroup in mimeTypeGroups)
            {
                var extensions = mimeTypeGroup.ToArray();

                var acceptType = new NativeFilePickerAcceptType();
                acceptType.Description = extensions.Length > 1 ? string.Empty : extensions.First();

                var acceptItem = new NativeFilePickerAcceptTypeItem()
                {
                    MimeType   = mimeTypeGroup.Key,
                    Extensions = extensions
                };
                allAccepts.Add(acceptItem);

                acceptType.Accept = new[] { acceptItem };
                acceptTypes.Add(acceptType);
            }

            if (allAccepts.Count > 1)
            {
                var fullAcceptType = new NativeFilePickerAcceptType()
                {
                    Description = "All",
                    Accept      = allAccepts.ToArray()
                };

                acceptTypes.Insert(0, fullAcceptType);
            }

            return(acceptTypes.ToArray());
        }
コード例 #7
0
        public override Task Invoke(IOwinContext context)
        {
            var path = FileSystem.MapPath(_options.BasePath, context.Request.Path.Value);
            var ext  = Path.GetExtension(path);

            if (ExtToHandle(ext))
            {
                Trace.WriteLine("Invoke SassMiddleware");

                context.Response.StatusCode  = 200;
                context.Response.ContentType = MimeTypeService.GetMimeType(".css");

                var compiler   = new SassCompiler();
                var compressed = compiler.CompileFile(path, OutputStyle.Compressed, false);
                compressed = compressed.Replace(";}", "}").Replace(" {", "{");

                context.Response.Write(compressed);

                return(Globals.CompletedTask);
            }

            return(Next.Invoke(context));
        }
コード例 #8
0
        private string[] GetMimeTypes()
        {
            if (FileTypeFilter.Contains("*"))
            {
                return(new[] { "*/*" });
            }

            List <string> mimeTypes = new List <string>();

            using Android.Webkit.MimeTypeMap? mimeTypeMap = Android.Webkit.MimeTypeMap.Singleton;
            if (mimeTypeMap is null)
            {
                // when map is unavailable (probably never happens, but Singleton returns nullable)
                return(new[] { "*/*" });
            }

            foreach (string oneExtensionForLoop in FileTypeFilter)
            {
                bool unknownExtensionPresent = false;

                string oneExtension = oneExtensionForLoop;
                if (oneExtension.StartsWith("."))
                {
                    // Supported format from UWP, e.g. ".jpg"
                    oneExtension = oneExtension.Substring(1);
                }

                if (!mimeTypeMap.HasExtension(oneExtension))
                {
                    // when there is unknown extension, we should show all files
                    unknownExtensionPresent = true;
                }

                string?mimeType = mimeTypeMap.GetMimeTypeFromExtension(oneExtension);
                if (string.IsNullOrEmpty(mimeType))
                {
                    // second check for unknown extension...
                    unknownExtensionPresent = true;
                }
                else
                {
#pragma warning disable CS8604 // Possible null reference argument.
                    // it cannot be null, as this is within "if", but still compiler complains about possible null reference
                    if (!mimeTypes.Contains(mimeType))
                    {
                        mimeTypes.Add(mimeType);
                    }
#pragma warning restore CS8604 // Possible null reference argument.
                }

                if (unknownExtensionPresent)
                {
                    // it is some unknown extension
                    var mimeTypesFromUno = FileTypeFilter
                                           .Select(extension => MimeTypeService.GetFromExtension(extension))
                                           .Distinct();

                    if (mimeTypesFromUno is null || mimeTypesFromUno.Count() < 1)
                    {
                        return(new[] { "*/*" });
                    }

                    foreach (var oneUnoMimeType in mimeTypesFromUno)
                    {
                        if (!mimeTypes.Contains(oneUnoMimeType))
                        {
                            mimeTypes.Add(oneUnoMimeType);
                        }
                    }
                }
            }


            return(mimeTypes.ToArray());
        }