/// <summary> /// Search for new update packages with the given options /// </summary> /// <returns>Return the result of the update search</returns> public async Task <UpdatePackageSearchResult> SearchForNewUpdatePackagesAsync() { var versionFilter = VersionFilter?.GetSupportedPrereleases(); if (versionFilter?.Length > 10) { throw new ArgumentException("A maximum of 10 version filters is allowed."); } var httpClient = _httpClient.Value; var version = VersionProvider.GetVersion(); HttpClientSetHeaders(version); try { var uri = new Uri($"packages/{Uri.EscapeDataString(version.ToString())}/check", UriKind.Relative); var platforms = PlatformProvider?.GetEncodedPlatforms(); if (platforms != null) { uri = uri.AddQueryParameters("platforms", platforms.Value.ToString()); } if (versionFilter?.Length > 0) { uri = uri.AddQueryParameters("versionFilter", Uri.EscapeDataString(JsonConvert.SerializeObject(versionFilter))); } var response = await httpClient.GetAsync(uri); if (!response.IsSuccessStatusCode) { throw await UpdateSystemResponseExtensions.GetResponseException(response, this); } var result = await response.Content.ReadAsStringAsync(); var jwtResponse = JsonConvert.DeserializeObject <JwtResponse <UpdatePackageSearchResult> >(result, _jsonSerializerSettings); HttpClientSetJwt(jwtResponse); var searchResult = jwtResponse.Result; searchResult.Initialize(this); if (!searchResult.IsUpdateAvailable) { Settings?.NoUpdatesFoundCleanup(ProjectId); } return(searchResult); } finally { httpClient.DefaultRequestHeaders.AcceptLanguage.Clear(); } }
public void CanAddQueryParametersFromNameValueCollectionWithRepeatedKeys() { // Arrange Uri url1 = new Uri("http://dr.dk"); Uri url2 = new Uri("http://dr.dk?x=john&y=wide"); NameValueCollection p = new NameValueCollection(); p["x"] = "1"; p.Add("y", "hello"); p.Add("y", "world"); // Act url1 = url1.AddQueryParameters(p); url2 = url2.AddQueryParameters(p); // Assert NameValueCollection pcoll1 = HttpUtility.ParseQueryString(url1.Query); NameValueCollection pcoll2 = HttpUtility.ParseQueryString(url2.Query); Assert.AreEqual(2, pcoll1.Count); Assert.AreEqual("1", pcoll1["x"]); Assert.AreEqual("hello,world", pcoll1["y"]); Assert.AreEqual(2, pcoll2.Count); Assert.AreEqual("john,1", pcoll2["x"]); Assert.AreEqual("wide,hello,world", pcoll2["y"]); }
/// <summary> /// Download information to repair the current installation /// </summary> /// <returns>Return the information required by the downloader to scan the current files and find differences</returns> public async Task <UpdatePackageFilebase> RepairAsync() { var version = VersionProvider.GetVersion(); HttpClientSetHeaders(version); var uri = new Uri($"packages/{Uri.EscapeDataString(version.ToString())}/files", UriKind.Relative); var platforms = PlatformProvider?.GetEncodedPlatforms(); if (platforms != null) { uri = uri.AddQueryParameters("platforms", platforms.Value.ToString()); } var response = await _httpClient.Value.GetAsync(uri); if (!response.IsSuccessStatusCode) { throw await UpdateSystemResponseExtensions.GetResponseException(response, this); } var result = await response.Content.ReadAsStringAsync(); var jwtResponse = JsonConvert.DeserializeObject <JwtResponse <List <SignedFileInformation> > >(result, _jsonSerializerSettings); HttpClientSetJwt(jwtResponse); return(new UpdatePackageFilebase(jwtResponse.Result, this, version)); }
public void ItDoesNotDoAnythingWhenNotGivenParameters() { // g var baseUri = new Uri("http://www.example.com/"); // w var actual = baseUri.AddQueryParameters(new Dictionary <string, string>()); // t actual.ToString().Should().Be("http://www.example.com/"); }
public void ItCanEscapeParameters() { // g var baseUri = new Uri("http://www.example.com/"); // w var actual = baseUri.AddQueryParameters(new Dictionary <string, string> { { "query", "; DELETE * FROM Users" } }); // t actual.ToString().Should().Be("http://www.example.com/?query=%3B DELETE * FROM Users"); }
public void ItCanAddSeveralQueryParameters() { // g var baseUri = new Uri("http://www.example.com/"); // w var actual = baseUri.AddQueryParameters(new Dictionary <string, string> { { "query", "param" }, { "second", "param" } }); // t actual.ToString().Should().Be("http://www.example.com/?query=param&second=param"); }
public void ItCanAddAQueryParameterWithoutValue() { // g var baseUri = new Uri("http://www.example.com/"); // w var actual = baseUri.AddQueryParameters(new Dictionary <string, string> { { "query", "" } }); // t actual.ToString().Should().Be("http://www.example.com/?query="); }
public void ItCanAddAQueryParameterMultipleTimes() { // g var baseUri = new Uri("http://www.example.com/"); // w var temp = baseUri.AddQueryParameters(new Dictionary <string, string> { { "query", "param" } }); var actual = temp.AddQueryParameters(new Dictionary <string, string> { { "foo", "bar" } }); // t actual.ToString().Should().Be("http://www.example.com/?query=param&foo=bar"); }
private Uri buildURL(HttpMethod method, string path, Dictionary <string, string> queryParams = null) { UriBuilder builder = new UriBuilder() { Scheme = !method.Equals(HttpMethod.Head) ? Constants.HttpsScheme : Constants.HttpScheme, Host = this.accountName + Constants.DnsSuffix, Path = $"{this.fileSystemName}/{path}" }; Uri url = builder.Uri; if (queryParams != null) { url = url.AddQueryParameters(queryParams); } return(url); }
public static Uri BindByName(this UriTemplate template, Uri baseUri, IDictionary <string, string> parameters) { IDictionary <string, string> unusedParameters = new Dictionary <string, string>(parameters); foreach (var p in template.GetParameterNames()) { if (parameters.TryGetValue(p, out string v)) { template = template.AddParameter(p, v); unusedParameters.Remove(p); } } var url = new Uri(baseUri, template.Resolve()); url = url.AddQueryParameters(unusedParameters); return(url); }
private void CanAddQueryParametersFromAny(object p) { // Arrange Uri url1 = new Uri("http://dr.dk"); Uri url2 = new Uri("http://dr.dk?q=world"); Uri url3 = new Uri("http://dr.dk?x=5&q=web"); Uri url4 = new Uri("http://dr.dk?q=world&q=wide&x=8"); // Act url1 = url1.AddQueryParameters(p); url2 = url2.AddQueryParameters(p); url3 = url3.AddQueryParameters(p); url4 = url4.AddQueryParameters(p); // Assert NameValueCollection pcoll1 = HttpUtility.ParseQueryString(url1.Query); NameValueCollection pcoll2 = HttpUtility.ParseQueryString(url2.Query); NameValueCollection pcoll3 = HttpUtility.ParseQueryString(url3.Query); NameValueCollection pcoll4 = HttpUtility.ParseQueryString(url4.Query); Assert.AreEqual(2, pcoll1.Count); Assert.AreEqual("1", pcoll1["x"]); Assert.AreEqual("hello", pcoll1["y"]); Assert.AreEqual(3, pcoll2.Count); Assert.AreEqual("1", pcoll2["x"]); Assert.AreEqual("hello", pcoll2["y"]); Assert.AreEqual("world", pcoll2["q"]); Assert.AreEqual(3, pcoll3.Count); Assert.AreEqual("5,1", pcoll3["x"]); Assert.AreEqual("hello", pcoll3["y"]); Assert.AreEqual("web", pcoll3["q"]); Assert.AreEqual(3, pcoll4.Count); Assert.AreEqual("8,1", pcoll4["x"]); Assert.AreEqual("hello", pcoll4["y"]); Assert.AreEqual("world,wide", pcoll4["q"]); }
public void TestAddQuery(Uri uri, string paramName, string paramValue, Uri result) { var actual = uri.AddQueryParameters(paramName, paramValue); Assert.Equal(result, actual); }