コード例 #1
0
        public void Handle(HttpDiscussion discussion)
        {
            var url_part = discussion.Request.Url;

            // do some basic sanitization of the URL, attempting to make sure they can't read files outside the basepath
            // NOTE: this is probably not bulletproof/secure
            url_part = url_part.Replace("\\..\\", "\\");
            url_part = url_part.Replace("/../", "/");
            url_part = url_part.Replace("//", "/");
            url_part = url_part.Replace(@"\\", @"\");
            url_part = url_part.Replace(":", "");
            url_part = url_part.Replace("/", Path.DirectorySeparatorChar.ToString());

            foreach (var file in FilesPath)
            {
                if (file.Path == url_part)
                {
                    var file_extension = GetExtension(url_part);

                    discussion.Response                         = new HttpResponse();
                    discussion.Response.StatusCode              = "200";
                    discussion.Response.ReasonPhrase            = "Ok";
                    discussion.Response.Headers["Content-Type"] = QuickMimeTypeMapper.GetMimeType(file_extension);
                    discussion.Response.Content                 = file.Content;

                    return;
                }
            }

            discussion.Response = HttpBuilder.NotFound();
        }
コード例 #2
0
        HttpResponse Handle_LocalFile(HttpRequest request, string local_path)
        {
            var file_extension = Path.GetExtension(local_path);

            var response = new HttpResponse();

            response.HttpStatusCode          = HttpStatusCode.Ok;
            response.Headers["Content-Type"] = QuickMimeTypeMapper.GetMimeType(file_extension);
            response.ContentStream           = File.Open(local_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

            return(response);
        }
コード例 #3
0
        HttpResponse Handle_LocalFile(HttpRequest request, string local_path)
        {
            var file_extension = Path.GetExtension(local_path);

            var response = new HttpResponse();
            response.StatusCode = "200";
            response.ReasonPhrase = "Ok";
            response.Headers["Content-Type"] = QuickMimeTypeMapper.GetMimeType(file_extension);
            response.Content = File.ReadAllBytes(local_path);

            return response;
        }
コード例 #4
0
        HttpResponse Handle_ResourceFile(HttpRequest request, string resource_name)
        {
            var file_extension = Path.GetExtension(resource_name);

            var response = new HttpResponse();
            response.StatusCode = "200";
            response.ReasonPhrase = "Ok";
            response.Headers["Content-Type"] = QuickMimeTypeMapper.GetMimeType(file_extension);
            response.Content = Resource.readAll(resource_name);

            return response;
        }
コード例 #5
0
        private HttpResponse HandleFile(string localPath)
        {
            var fileExtension = Path.GetExtension(localPath);

            var response = new HttpResponse();

            response.Header.ContentType = QuickMimeTypeMapper.GetMimeType(fileExtension);

            response.StatusCode           = ResponseStatusCode.Ok;
            response.Content              = File.ReadAllBytes(localPath);
            response.Header.ContentLength = response.Content.Length.ToString();
            return(response);
        }
コード例 #6
0
        HttpResponse Handle_LocalFile(HttpRequest request, string local_path)
        {
            var file_extension = Path.GetExtension(local_path);

            var response = new HttpResponse();

            response.StatusCode   = "200";
            response.ReasonPhrase = "Ok";
            String mimeType = QuickMimeTypeMapper.GetMimeType(file_extension);

            if (mimeType.StartsWith("audio/"))
            {
                response.Headers["Accept-Ranges"] = "bytes";
            }
            response.Headers["Content-Type"] = mimeType;
            response.Content = File.ReadAllBytes(local_path);

            return(response);
        }