public void HeaderShouldBeCaseInsensitive() { HeaderCollection headers = new HeaderCollection(); headers.SetHeader("Accept", MimeType); headers.SetHeader("Content-Type", MimeType); BuildingRequestEventArgs requestEventArgs = new BuildingRequestEventArgs("GET", new Uri("http://localhost"), headers, null, HttpStack.Auto); DataServiceClientRequestMessageArgs args = new DataServiceClientRequestMessageArgs( requestEventArgs.Method, requestEventArgs.RequestUri, false, false, requestEventArgs.Headers); HttpClientRequestMessage request = new HttpClientRequestMessage(args); const int maxPageSize = 10; ODataPreferenceHeader preferHeader = new ODataPreferenceHeader(request); preferHeader.MaxPageSize = maxPageSize; Assert.Equal(maxPageSize, preferHeader.MaxPageSize); string expected = $"{MaxPageSizePreference}={maxPageSize}"; Assert.Equal(expected, request.GetHeader("pReFer")); Assert.Equal(MimeType, request.GetHeader("accepT")); }
public void TestHeaders(Dictionary <string, string> headers) { var client = new HttpClient(); var arg = new DataServiceClientRequestMessageArgs("Get", new Uri("Http://localhost"), true, true, headers); var message = new HttpClientRequestMessage(client, arg, new DataServiceContext().Configurations); message.Headers.Should().BeEquivalentTo(headers); }
public void TestBasic(string method, string requestUri) { var client = new HttpClient(); var arg = new DataServiceClientRequestMessageArgs(method, new Uri(requestUri), true, true, new Dictionary <string, string>()); var message = new HttpClientRequestMessage(client, arg, new DataServiceContext().Configurations); message.Method.Should().Be(method); message.Url.Should().Be(requestUri); }
public void UnwrapAggregateException() { var msg = new HttpClientRequestMessage(new DataServiceClientRequestMessageArgs("GET", new Uri("http://localhost"), false, false, new Dictionary <string, string>())); var task = new Task <HttpResponseMessage>(() => throw new Exception("single exception")); task.RunSynchronously(); var exception = Assert.Throws <DataServiceTransportException>(() => msg.EndGetResponse(task)); Assert.StartsWith("System.Exception: single exception\r\n", exception.Message); }
DataServiceClientRequestMessage ctx_OnMessageCreating(DataServiceClientRequestMessageArgs args) { if (_workaroundDateTimeQuery != null) { args = new DataServiceClientRequestMessageArgs("GET", new Uri(_workaroundDateTimeQuery), false, false, new Dictionary <string, string>()); _workaroundDateTimeQuery = null; } HttpClientRequestMessage clientRequestMessage = new HttpClientRequestMessage(args); clientRequestMessage.Credentials = CredentialCache.DefaultCredentials; return(clientRequestMessage); }
private void SendRequest(DataServiceClientRequestMessage requestMessage) { Assert.IsNotNull(requestMessage, "sendRequest test hook was called with null request message"); HttpClientRequestMessage httpClientRequestMessage = requestMessage as HttpClientRequestMessage; if (httpClientRequestMessage != null) { Dictionary <string, string> headers = WrapHttpRequestHeaders(httpClientRequestMessage.HttpRequestMessage.Headers); headers.Add("__Uri", httpClientRequestMessage.Url.AbsoluteUri); headers.Add("__HttpVerb", httpClientRequestMessage.HttpRequestMessage.Method.ToString()); requestHeaders.Add(headers); requestMessage.SetHeader("__Uri", httpClientRequestMessage.Url.AbsoluteUri); requestMessage.SetHeader("__HttpVerb", httpClientRequestMessage.Method); if (null != this.CustomSendRequestAction) { this.CustomSendRequestAction(httpClientRequestMessage.HttpRequestMessage); } } else { HttpWebRequestMessage webRequestMessage = requestMessage as HttpWebRequestMessage; Dictionary <string, string> headers = WrapHttpHeaders(webRequestMessage.HttpWebRequest.Headers); headers.Add("__Uri", webRequestMessage.Url.AbsoluteUri); headers.Add("__HttpVerb", webRequestMessage.HttpWebRequest.Method.ToString()); requestHeaders.Add(headers); requestMessage.SetHeader("__Uri", webRequestMessage.Url.AbsoluteUri); requestMessage.SetHeader("__HttpVerb", webRequestMessage.Method); if (null != this.CustomSendRequestAction) { this.CustomSendRequestAction(webRequestMessage.HttpWebRequest); } } }
private DataServiceContextWrapper<DefaultContainer> CreateContext() { var wrappedContext = this.CreateWrappedContext<DefaultContainer>(); wrappedContext.Configurations.RequestPipeline.OnMessageCreating = (args) => { var message = new HttpClientRequestMessage(args.ActualMethod) { Url = args.RequestUri, Method = args.Method, }; foreach (var header in args.Headers) { message.SetHeader(header.Key, header.Value); } return message; }; return wrappedContext; }
/// <summary> /// Loads the metadata and converts it into an EdmModel that is then used by a dataservice context /// This allows the user to use the DataServiceContext directly without having to manually pass an IEdmModel in the Format /// </summary> /// <returns>A service model to be used in format tracking</returns> internal IEdmModel LoadServiceModelFromNetwork() { DataServiceClientRequestMessage httpRequest; BuildingRequestEventArgs requestEventArgs = null; // test hook for injecting a network request to use instead of the default if (InjectMetadataHttpNetworkRequest != null) { httpRequest = InjectMetadataHttpNetworkRequest(); } else { requestEventArgs = new BuildingRequestEventArgs( "GET", context.GetMetadataUri(), null, null, context.HttpStack); // fire the right events if they exist to allow user to modify the request if (context.HasBuildingRequestEventHandlers) { requestEventArgs = context.CreateRequestArgsAndFireBuildingRequest( requestEventArgs.Method, requestEventArgs.RequestUri, requestEventArgs.HeaderCollection, requestEventArgs.ClientHttpStack, requestEventArgs.Descriptor); } DataServiceClientRequestMessageArgs args = new DataServiceClientRequestMessageArgs( requestEventArgs.Method, requestEventArgs.RequestUri, context.UseDefaultCredentials, context.UsePostTunneling, requestEventArgs.Headers); httpRequest = new HttpClientRequestMessage(args); } Descriptor descriptor = requestEventArgs != null ? requestEventArgs.Descriptor : null; // fire the right events if they exist if (context.HasSendingRequest2EventHandlers) { SendingRequest2EventArgs eventArgs = new SendingRequest2EventArgs( httpRequest, descriptor, false); context.FireSendingRequest2(eventArgs); } Task <IODataResponseMessage> asyncResponse = Task <IODataResponseMessage> .Factory.FromAsync(httpRequest.BeginGetResponse, httpRequest.EndGetResponse, httpRequest); IODataResponseMessage response = asyncResponse.GetAwaiter().GetResult(); ReceivingResponseEventArgs responseEvent = new ReceivingResponseEventArgs(response, descriptor); context.FireReceivingResponseEvent(responseEvent); using (StreamReader streamReader = new StreamReader(response.GetStream())) using (XmlReader xmlReader = XmlReader.Create(streamReader)) { return(CsdlReader.Parse(xmlReader)); } }