From d8c01ded6eb57ba312e1cd62c4fa51dbcce6053a Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Wed, 19 Sep 2012 12:51:37 -0400 Subject: made some improvements to the base http handler --- .../Net/Handlers/StaticFileHandler.cs | 87 ++++++++-------------- 1 file changed, 30 insertions(+), 57 deletions(-) (limited to 'MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs') diff --git a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs index 741d2d6c1..11438b164 100644 --- a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs @@ -33,46 +33,7 @@ namespace MediaBrowser.Common.Net.Handlers } } - private bool _sourceStreamEnsured; - private Stream _sourceStream; - private Stream SourceStream - { - get - { - EnsureSourceStream(); - return _sourceStream; - } - } - - private void EnsureSourceStream() - { - if (!_sourceStreamEnsured) - { - try - { - _sourceStream = File.OpenRead(Path); - } - catch (FileNotFoundException ex) - { - StatusCode = 404; - Logger.LogException(ex); - } - catch (DirectoryNotFoundException ex) - { - StatusCode = 404; - Logger.LogException(ex); - } - catch (UnauthorizedAccessException ex) - { - StatusCode = 403; - Logger.LogException(ex); - } - finally - { - _sourceStreamEnsured = true; - } - } - } + private Stream SourceStream { get; set; } protected override bool SupportsByteRangeRequests { @@ -82,7 +43,7 @@ namespace MediaBrowser.Common.Net.Handlers } } - public override bool ShouldCompressResponse(string contentType) + private bool ShouldCompressResponse(string contentType) { // Can't compress these if (IsRangeRequest) @@ -105,29 +66,41 @@ namespace MediaBrowser.Common.Net.Handlers return SourceStream.Length; } - protected override Task GetLastDateModified() + protected override Task GetResponseInfo() { - DateTime? value = null; - - EnsureSourceStream(); + ResponseInfo info = new ResponseInfo + { + ContentType = MimeTypes.GetMimeType(Path), + }; - if (SourceStream != null) + try + { + SourceStream = File.OpenRead(Path); + } + catch (FileNotFoundException ex) + { + info.StatusCode = 404; + Logger.LogException(ex); + } + catch (DirectoryNotFoundException ex) { - value = File.GetLastWriteTimeUtc(Path); + info.StatusCode = 404; + Logger.LogException(ex); + } + catch (UnauthorizedAccessException ex) + { + info.StatusCode = 403; + Logger.LogException(ex); } - return Task.FromResult(value); - } + info.CompressResponse = ShouldCompressResponse(info.ContentType); - public override Task GetContentType() - { - return Task.FromResult(MimeTypes.GetMimeType(Path)); - } + if (SourceStream != null) + { + info.DateLastModified = File.GetLastWriteTimeUtc(Path); + } - protected override Task PrepareResponse() - { - EnsureSourceStream(); - return Task.FromResult(null); + return Task.FromResult(info); } protected override Task WriteResponseToOutputStream(Stream stream) -- cgit v1.2.3