/// <summary> /// Initializes a new instance of the <see cref="UrlBuilder"/> class /// with the specified <see cref="System.Uri"/> instance. /// </summary> /// <param name="uri">An instance of the <see cref="System.Uri"/> class.</param> /// <exception cref="System.ArgumentNullException"> /// <paramref name="uri"/> is <see langword="null"/>. /// </exception> public UrlBuilder(Uri uri) { Requires.NotNull(uri, "uri"); this.builder = new UriBuilder(uri); this.queryParameters = new QueryStringParametersDictionary(uri.Query); }
public void CreateRequestMessage() { var client = new HttpClient(); Assert.ThrowsException <InvalidOperationException>(() => { client.CreateRequestMessage(HttpMethod.Get, null); }); Assert.ThrowsException <InvalidOperationException>(() => { client.CreateRequestMessage(HttpMethod.Get, new Uri("test", UriKind.Relative)); }); client.BaseAddress = new Uri("https://example.com/"); var requestMessage = client.CreateRequestMessage(HttpMethod.Get, null); Assert.IsNotNull(requestMessage); Assert.IsTrue(requestMessage.Method == HttpMethod.Get); Assert.AreEqual("https://example.com/", requestMessage.RequestUri.AbsoluteUri); // Assert.ThrowsException<InvalidOperationException>(() => { client.CreateRequestMessage(HttpMethod.Get, null); }); requestMessage = client.CreateRequestMessage(HttpMethod.Get, new Uri("test", UriKind.Relative)); Assert.IsNotNull(requestMessage); Assert.IsTrue(requestMessage.Method == HttpMethod.Get); Assert.AreEqual("https://example.com/test", requestMessage.RequestUri.AbsoluteUri); var queryStringParameters = new QueryStringParametersDictionary(); queryStringParameters.Add("test", "testvalue"); requestMessage = client.CreateRequestMessage(HttpMethod.Get, new Uri("test", UriKind.Relative), queryStringParameters); Assert.IsNotNull(requestMessage); Assert.IsTrue(requestMessage.Method == HttpMethod.Get); Assert.AreEqual("https://example.com/test?test=testvalue", requestMessage.RequestUri.AbsoluteUri); StringAssert.That.IsNotEmpty(requestMessage.RequestUri.Query); }
public void BasicConstructors() { var q = new QueryStringParametersDictionary(); Assert.IsNotNull(q); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); q = new QueryStringParametersDictionary(16); Assert.IsNotNull(q); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); }
/// <summary> /// Initializes a new instance of the <see cref="UrlBuilder"/> class /// with the specified scheme and host. /// </summary> /// <param name="scheme">An Internet access protocol.</param> /// <param name="host">A DNS-style domain name or IP address.</param> /// <param name="port">An IP port number for the service.</param> /// <param name="path">The path to the Internet resource.</param> /// <param name="extraValue">A query string or fragment identifier.</param> /// <exception cref="System.ArgumentException"> /// <paramref name="extraValue"/> is neither <see langword="null"/> /// nor <see cref="System.String.Empty">System.String.Empty</see>, nor /// does a valid fragment identifier begin with a number sign (#), nor /// a valid query string begin with a question mark (?). /// </exception> /// <exception cref="System.ArgumentOutOfRangeException"> /// <paramref name="port"/> is less than -1 or greater than 65,535. /// </exception> public UrlBuilder(UriScheme scheme, string host, int port, string path, string extraValue) { this.builder = new UriBuilder(scheme, host, port, path, extraValue); this.queryParameters = new QueryStringParametersDictionary(this.builder.Query); }
/// <summary> /// Initializes a new instance of the <see cref="UrlBuilder"/> class /// with the specified scheme and host. /// </summary> /// <param name="scheme">An Internet access protocol.</param> /// <param name="host">A DNS-style domain name or IP address.</param> /// <param name="port">An IP port number for the service.</param> /// <param name="path">The path to the Internet resource.</param> /// <exception cref="System.ArgumentOutOfRangeException"> /// <paramref name="port"/> is less than -1 or greater than 65,535. /// </exception> public UrlBuilder(UriScheme scheme, string host, int port, string path) { this.builder = new UriBuilder(scheme, host, port, path); this.queryParameters = new QueryStringParametersDictionary(); }
public void DictionaryConstructor() { var q = new QueryStringParametersDictionary(new Dictionary <string, string>()); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary <string, string>() { { "foo", "bar" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary <string, string>() { { "foo", "bar" }, { "baz", "fuzz" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary <string, string>() { { "foo", "" }, { "baz", "fuzz" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary <string, string>() { { "foo", "bar" }, { "baz", "" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); Assert.ThrowsException <ArgumentNullException>(() => new QueryStringParametersDictionary((Dictionary <string, string>)null)); }
public void ParsingConstructor() { var q = new QueryStringParametersDictionary(""); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary((string)null); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary("?foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("&foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=fuzz&"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("&foo=bar&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz="); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=&"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); Assert.ThrowsException <InvalidOperationException>(() => new QueryStringParametersDictionary("foo")); }
public void ParsingConstructor() { var q = new QueryStringParametersDictionary(""); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary((string)null); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary("?foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("&foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=fuzz&"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("&foo=bar&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=&baz=fuzz"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz="); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); q = new QueryStringParametersDictionary("foo=bar&baz=&"); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); ExceptionAssert.Throws<InvalidOperationException>(() => new QueryStringParametersDictionary("foo")); }
public void DictionaryConstructor() { var q = new QueryStringParametersDictionary(new Dictionary<string, string>()); Assert.AreEqual(0, q.Count); Assert.AreEqual(0, q.Keys.Count); Assert.AreEqual(0, q.Values.Count); Assert.AreEqual("", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary<string, string>() { { "foo", "bar" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(1, q.Keys.Count); Assert.AreEqual(1, q.Values.Count); Assert.AreEqual("foo", q.Keys.First()); Assert.AreEqual("bar", q["foo"]); Assert.AreEqual("foo=bar", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary<string, string>() { { "foo", "bar" }, { "baz", "fuzz" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=bar&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary<string, string>() { { "foo", "" }, { "baz", "fuzz" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("fuzz", q["baz"]); Assert.AreEqual("foo=&baz=fuzz", q.ToQueryString()); q = new QueryStringParametersDictionary(new Dictionary<string, string>() { { "foo", "bar" }, { "baz", "" } }); Assert.AreNotEqual(0, q.Count); Assert.AreEqual(2, q.Keys.Count); Assert.AreEqual(2, q.Values.Count); Assert.AreEqual("baz", q.Keys.Skip(1).First()); Assert.AreEqual("", q["baz"]); Assert.AreEqual("foo=bar&baz=", q.ToQueryString()); ExceptionAssert.Throws<ArgumentNullException>(() => new QueryStringParametersDictionary((Dictionary<string, string>)null)); }
public static HttpRequestMessage CreateRequestMessage(this HttpClient httpClient, HttpMethod method, Uri uri, QueryStringParametersDictionary queryStringParameters = null, IDictionary <string, string> headerCollection = null) { Uri requestUri = null; if ((uri == null) && (httpClient.BaseAddress == null)) { throw new InvalidOperationException("SR.net_http_client_invalid_requesturi"); } if (uri == null) { requestUri = httpClient.BaseAddress; } else { // If the request Uri is an absolute Uri, just use it. Otherwise try to combine it with the base Uri. if (!uri.IsAbsoluteUri) { if (httpClient.BaseAddress == null) { throw new InvalidOperationException("SR.net_http_client_invalid_requesturi"); } else { requestUri = new Uri(httpClient.BaseAddress, uri); } } } if (queryStringParameters != null) { var builder = new UriBuilder(requestUri) { Query = queryStringParameters.ToQueryString() }; requestUri = builder.Uri; } var requestMessge = new HttpRequestMessage(method, requestUri); if (headerCollection != null) { foreach (var header in headerCollection) { requestMessge.Headers.Add(header.Key, header.Value); } } return(requestMessge); }
public UrlBuilder(string uri) { this.builder = new UriBuilder(uri); this.queryParameters = new QueryStringParametersDictionary(this.builder.Query); }
/// <summary> /// Initializes a new instance of the <see cref="UrlBuilder"/> class. /// </summary> public UrlBuilder() { this.builder = new UriBuilder(); this.queryParameters = new QueryStringParametersDictionary(); }
/// <summary> /// Initializes a new instance of the <see cref="UrlBuilder"/> class /// with the specified <see cref="System.Uri"/> instance. /// </summary> /// <param name="uri">An instance of the <see cref="System.Uri"/> class.</param> /// <param name="path">The path to the Internet resource.</param> /// <exception cref="System.ArgumentNullException"> /// <paramref name="uri"/> is <see langword="null"/>. /// </exception> public UrlBuilder(Uri uri, string path) { Requires.NotNull(uri, "uri"); this.builder = new UriBuilder(uri); this.queryParameters = new QueryStringParametersDictionary(uri.Query); this.builder.Path = path; }