public void BuildWithOnlyBaseUrlTest() { // Arrange var settings = new UrlBuilderSettings { BaseUrl = new Uri("http://quack.fu/duck") }; // Act var result = _classUnderTest.Build(settings); // Assert result.Should().Be("http://quack.fu/duck/"); }
public string Build(UrlBuilderSettings settings) { if (settings.BaseUrl == null) { throw new ArgumentNullException(nameof(settings.BaseUrl)); } var url = new StringBuilder(); url.Append(settings.BaseUrl.AbsoluteUri); if (!settings.BaseUrl.AbsoluteUri.EndsWith("/")) { url.Append("/"); } var segement = settings.Segment ?? ""; if (settings.SegmentParameter != null && settings.SegmentParameter.Count > 0) { foreach (var key in settings.SegmentParameter.Keys) { segement = segement.Replace(GetSegementParameterName(key), settings.SegmentParameter[key].ToString()); } } if (!segement.IsNullOrEmpty()) { url.Append(segement); if (!segement.EndsWith("/")) { url.Append("/"); } } if (settings.QueryParameter != null && settings.QueryParameter.Any()) { url.Append("?"); url.Append(String.Join("&", settings.QueryParameter.Select(p => p.Name + "=" + p.Value.ToString()))); } var totalUrl = new Uri(url.ToString()); return(totalUrl.AbsoluteUri); }
public void BuildWithSegmentParameterTest() { // Arrange var settings = new UrlBuilderSettings { BaseUrl = new Uri("http://quack.fu"), SegmentParameter = new Dictionary <string, object> { { "darkwing", "duck" }, { "quackfu", Guid.Empty }, { "number", 7 } } }; // Act var result = _classUnderTest.Build(settings); // Assert result.Should().Be("http://quack.fu/"); }