Пример #1
0
 public MazeRequestReceivedEventArgs(MazeRequest request, MazeResponse response,
                                     CancellationToken cancellationToken)
 {
     Request           = request;
     Response          = response;
     CancellationToken = cancellationToken;
 }
Пример #2
0
        public static int ParseRequest(ArraySegment <byte> buffer, out MazeRequest request)
        {
            var memoryStream = new MemoryStream(buffer.Array, buffer.Offset, buffer.Count, false);
            var streamReader = new StreamReader(memoryStream, Encoding);

            request = DecodeRequest(streamReader);

            return(GetBodyPosition(buffer) - buffer.Offset);
        }
 public HttpResponseStream(DefaultMazeResponse response, MazeRequest request, IDataSocket socket,
                           int packageBufferSize, int maxHeaderSize, CancellationToken requestCancellationToken)
 {
     _response                 = response;
     _request                  = request;
     _socket                   = socket;
     _packageBufferSize        = packageBufferSize;
     _maxHeaderSize            = maxHeaderSize;
     _requestCancellationToken = requestCancellationToken;
 }
Пример #4
0
        public DefaultMazeContext(MazeRequest request, MazeResponse response, IServiceProvider serviceProvider)
        {
            Request  = request;
            Response = response;

            Request.Context = this;

            RequestServices = serviceProvider;

            _requestCancellationTokenSource = new CancellationTokenSource();
            RequestAborted = _requestCancellationTokenSource.Token;
        }
Пример #5
0
 public HttpResponseStream(DefaultMazeResponse response, MazeRequest request, IDataSocket socket,
                           int packageBufferSize, int maxHeaderSize, ArrayPool <byte> bufferPool, CancellationToken requestCancellationToken)
 {
     _response                 = response;
     _request                  = request;
     _socket                   = socket;
     _packageBufferSize        = packageBufferSize;
     _maxHeaderSize            = maxHeaderSize;
     _bufferPool               = bufferPool;
     _requestCancellationToken = requestCancellationToken;
     _customOffset             = socket.RequiredPreBufferLength ?? 0;
 }
Пример #6
0
        public static HttpRequestMessage ToHttpRequestMessage(this MazeRequest request)
        {
            var builder = new UriBuilder {
                Path = request.Path, Query = request.QueryString.Value
            };

            var message =
                new HttpRequestMessage(new HttpMethod(request.Method), builder.Uri)
            {
                Content = new RawStreamContent(request.Body)
            };

            request.Headers.CopyHeadersTo(message.Headers, message.Content.Headers);

            return(message);
        }
Пример #7
0
        public static MazeRequest EnableRewind(this MazeRequest request, int bufferThreshold = DefaultBufferThreshold, long?bufferLimit = null)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var body = request.Body;

            if (!body.CanSeek)
            {
                var fileStream = new Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream(body, bufferThreshold, bufferLimit, _getTempDirectory);
                request.Body = fileStream;
                request.Context.Response.RegisterForDispose(fileStream);
            }
            return(request);
        }
Пример #8
0
        private List <MediaTypeSegmentWithQuality> GetAcceptableMediaTypes(MazeRequest request)
        {
            var result = new List <MediaTypeSegmentWithQuality>();

            AcceptHeaderParser.ParseAcceptHeader(request.Headers[HeaderNames.Accept], result);
            for (var i = 0; i < result.Count; i++)
            {
                var mediaType = new MediaType(result[i].MediaType);
                if (!_respectBrowserAcceptHeader && mediaType.MatchesAllSubTypes && mediaType.MatchesAllTypes)
                {
                    result.Clear();
                    return(result);
                }
            }

            result.Sort(_sortFunction);

            return(result);
        }
 public static RequestHeaders GetTypedHeaders(this MazeRequest request)
 {
     return(new RequestHeaders(request.Headers));
 }
Пример #10
0
        protected override async Task AssertReceivedRequest(HttpRequestMessage requestMessage, MazeRequest request)
        {
            await base.AssertReceivedRequest(requestMessage, request);

            Assert.Equal("Hello World!", await new StreamReader(request.Body).ReadToEndAsync());
        }
Пример #11
0
        protected virtual Task AssertReceivedRequest(HttpRequestMessage requestMessage, MazeRequest request)
        {
            Assert.Equal(requestMessage.Method.Method, request.Method);
            Assert.Equal(requestMessage.RequestUri.LocalPath, request.Path);

            return(Task.CompletedTask);
        }
Пример #12
0
 /// <summary>
 ///     Ensure the <paramref name="request" /> <see cref="MazeRequest.Body" /> can be read multiple times. Normally
 ///     buffers request bodies in memory; writes requests larger than 30K bytes to disk.
 /// </summary>
 /// <param name="request">The <see cref="MazeRequest" /> to prepare.</param>
 /// <remarks>
 ///     Temporary files for larger requests are written to the location named in the <c>ASPNETCORE_TEMP</c>
 ///     environment variable, if any. If that environment variable is not defined, these files are written to the
 ///     current user's temporary folder. Files are automatically deleted at the end of their associated requests.
 /// </remarks>
 public static void EnableBuffering(this MazeRequest request)
 {
     request.EnableRewind();
 }
Пример #13
0
 public Task Execute(MazeRequest request, CommandTargetCollection targets,
                     CommandExecutionPolicy executionPolicy) =>
 throw new NotImplementedException();