コード例 #1
0
ファイル: CassetteRecord.cs プロジェクト: werwolfby/VCRSharp
        public static async Task <CassetteRecordResponse> CreateFromResponse(HttpResponseMessage response, CassetteRecordRequest request, CookieContainer?cookieContainer)
        {
            var record = new CassetteRecordResponse(response.Version, (int)response.StatusCode, response.ReasonPhrase, response.ToNameValueCollection())
            {
                Request = await CassetteRecordRequest.CreateFromRequest(response.RequestMessage, cookieContainer)
            };

            // In case of Redirect inner innerHandler can create a new request, that actually did redirect
            // External users can expect this RequestMessage for check redirecting URI for example
            // innerHandler can change request, so we should create a new CassetteRecordRequest
            // from response and compare it with the original value
            if (record.Request == request)
            {
                record.Request = null;
            }

            var(body, newContent) = await CassetteBody.CreateCassetteBody(response.Content);

            record.Body = body;
            if (newContent != null)
            {
                response.Content = newContent;
            }

            return(record);
        }
コード例 #2
0
ファイル: CassetteRecord.cs プロジェクト: werwolfby/VCRSharp
        public static async Task <CassetteRecordRequest> CreateFromRequest(HttpRequestMessage request, CookieContainer?cookieContainer)
        {
            var record = new CassetteRecordRequest(request.Method.Method, request.RequestUri,
                                                   request.ToNameValueCollection());

            // Host header is required by HTTP 1.1 spec, so we should add it if it is not provided
            if (record.Headers["Host"] == null)
            {
                record.Headers.Add("Host", request.RequestUri.IdnHost);
            }

            if (cookieContainer?.GetCookieHeader(request.RequestUri) is { } cookieHeader&& !string.IsNullOrWhiteSpace(cookieHeader))
            {
                record.Headers.Add("Cookie", cookieHeader);
            }

            var(body, newContent) = await CassetteBody.CreateCassetteBody(request.Content);

            record.Body = body;
            if (newContent != null)
            {
                request.Content = newContent;
            }

            return(record);
        }