예제 #1
0
        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/");
        }
예제 #2
0
파일: UrlBuilder.cs 프로젝트: eshava/core
        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);
        }
예제 #3
0
        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/");
        }