Пример #1
0
        public override string ComposeUrl(string endpoint, Dictionary <string, string> queries)
        {
            var mapQueries = queries == null ? QueryParameters : queries;
            var urlBuilder = new StringBuilder("");

            urlBuilder.Append(Protocol);
            urlBuilder.Append("://").Append(endpoint);
            if (null != UriPattern)
            {
                urlBuilder.Append(RoaSignatureComposer.ReplaceOccupiedParameters(UriPattern, PathParameters));
            }

            if (-1 == urlBuilder.ToString().IndexOf('?'))
            {
                urlBuilder.Append("?");
            }
            else if (!urlBuilder.ToString().EndsWith("?"))
            {
                urlBuilder.Append("&");
            }

            var query = ConcatQueryString(mapQueries);
            var url   = urlBuilder.Append(query).ToString();

            if (url.EndsWith("?") || url.EndsWith("&"))
            {
                url = url.Substring(0, url.Length - 1);
            }

            return(url);
        }
        public void ReplaceOccupiedParameters()
        {
            Dictionary <string, string> tmp = new Dictionary <string, string>
            {
                { "foo", "bar" },
                { "a", "A" },
                { "b", "B" }
            };
            string result = RoaSignatureComposer.ReplaceOccupiedParameters("url?a=[a]&foo=[foo]&b=[b]", tmp);

            Assert.Equal("url?a=A&foo=bar&b=B", result);
        }