mirror of https://github.com/lidarr/Lidarr
79 lines
2.2 KiB
C#
79 lines
2.2 KiB
C#
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNet.SignalR.Hosting;
|
|
using Microsoft.AspNet.SignalR.Owin.Infrastructure;
|
|
|
|
namespace Microsoft.AspNet.SignalR.Owin
|
|
{
|
|
public partial class ServerResponse : IResponse
|
|
{
|
|
private readonly CancellationToken _callCancelled;
|
|
private readonly IDictionary<string, object> _environment;
|
|
private Stream _responseBody;
|
|
|
|
public ServerResponse(IDictionary<string, object> environment)
|
|
{
|
|
_environment = environment;
|
|
_callCancelled = _environment.Get<CancellationToken>(OwinConstants.CallCancelled);
|
|
}
|
|
|
|
public CancellationToken CancellationToken
|
|
{
|
|
get { return _callCancelled; }
|
|
}
|
|
|
|
public string ContentType
|
|
{
|
|
get { return ResponseHeaders.GetHeader("Content-Type"); }
|
|
set { ResponseHeaders.SetHeader("Content-Type", value); }
|
|
}
|
|
|
|
public void Write(ArraySegment<byte> data)
|
|
{
|
|
ResponseBody.Write(data.Array, data.Offset, data.Count);
|
|
}
|
|
|
|
public Task Flush()
|
|
{
|
|
#if NET45
|
|
return ResponseBody.FlushAsync();
|
|
#else
|
|
return TaskAsyncHelper.FromMethod(() => ResponseBody.Flush());
|
|
#endif
|
|
}
|
|
|
|
public Task End()
|
|
{
|
|
return TaskAsyncHelper.Empty;
|
|
}
|
|
|
|
public IDictionary<string, string[]> ResponseHeaders
|
|
{
|
|
get { return _environment.Get<IDictionary<string, string[]>>(OwinConstants.ResponseHeaders); }
|
|
}
|
|
|
|
public Stream ResponseBody
|
|
{
|
|
get
|
|
{
|
|
if (_responseBody == null)
|
|
{
|
|
_responseBody = _environment.Get<Stream>(OwinConstants.ResponseBody);
|
|
}
|
|
|
|
return _responseBody;
|
|
}
|
|
}
|
|
|
|
public Action DisableResponseBuffering
|
|
{
|
|
get { return _environment.Get<Action>(OwinConstants.DisableResponseBuffering) ?? (() => { }); }
|
|
}
|
|
}
|
|
}
|