예제 #1
0
        public Uri GetFullUri()
        {
            Contract.Ensures(Contract.Result <Uri>() != null);
#if !NETFX_CORE
            Contract.Ensures(Contract.Result <Uri>().Scheme == Uri.UriSchemeHttp || Contract.Result <Uri>().Scheme == Uri.UriSchemeHttps);
#endif

            var parameters = new List <string>();
            if (!string.IsNullOrWhiteSpace(FilterParameter))
            {
#if !SILVERLIGHT && !NETFX_CORE
                parameters.Add(BuildParameter(StringConstants.FilterParameter, HttpUtility.UrlEncode(FilterParameter)));
#else
                parameters.Add(BuildParameter(StringConstants.FilterParameter, FilterParameter));
#endif
            }

            if (!string.IsNullOrWhiteSpace(SelectParameter))
            {
                parameters.Add(BuildParameter(StringConstants.SelectParameter, SelectParameter));
            }

            if (!string.IsNullOrWhiteSpace(SkipParameter))
            {
                parameters.Add(BuildParameter(StringConstants.SkipParameter, SkipParameter));
            }

            if (!string.IsNullOrWhiteSpace(TakeParameter))
            {
                parameters.Add(BuildParameter(StringConstants.TopParameter, TakeParameter));
            }

            if (OrderByParameter.Any())
            {
                parameters.Add(BuildParameter(StringConstants.OrderByParameter, string.Join(",", OrderByParameter)));
            }

            if (!string.IsNullOrWhiteSpace(ExpandParameter))
            {
                parameters.Add(BuildParameter(StringConstants.ExpandParameter, ExpandParameter));
            }

            var builder = new UriBuilder(_serviceBase);
            builder.Query = (string.IsNullOrEmpty(builder.Query) ? string.Empty : builder.Query.Substring(1) + "&") + string.Join("&", parameters);

            var resultUri = builder.Uri;

#if !NETFX_CORE
            Contract.Assume(_serviceBase.Scheme == Uri.UriSchemeHttp || _serviceBase.Scheme == Uri.UriSchemeHttps);
            Contract.Assume(resultUri.Scheme == Uri.UriSchemeHttp || resultUri.Scheme == Uri.UriSchemeHttps);
#endif

            return(resultUri);
        }
예제 #2
0
        public Uri GetFullUri()
        {
            var parameters = new List <string>();

            if (!FilterParameter.IsNullOrWhiteSpace())
            {
                parameters.Add(BuildParameter(StringConstants.FilterParameter, HttpUtility.UrlEncode(FilterParameter)));
            }

            if (!SelectParameter.IsNullOrWhiteSpace())
            {
                parameters.Add(BuildParameter(StringConstants.SelectParameter, SelectParameter));
            }

            if (!SkipParameter.IsNullOrWhiteSpace())
            {
                parameters.Add(BuildParameter(StringConstants.SkipParameter, SkipParameter));
            }

            if (!TakeParameter.IsNullOrWhiteSpace())
            {
                parameters.Add(BuildParameter(StringConstants.TopParameter, TakeParameter));
            }

            if (OrderByParameter.Any())
            {
                parameters.Add(BuildParameter(StringConstants.OrderByParameter, OrderByParameter.Join(",")));
            }

            if (!ExpandParameter.IsNullOrWhiteSpace())
            {
                parameters.Add(BuildParameter(StringConstants.ExpandParameter, ExpandParameter));
            }

            var builder = new UriBuilder(m_serviceBase);

            builder.Query = (string.IsNullOrEmpty(builder.Query) ? string.Empty : "&") + parameters.Join("&");

            var resultUri = builder.Uri;

            return(resultUri);
        }
예제 #3
0
        public IEnumerable <KeyValuePair <string, string> > Build()
        {
            var parameters = new List <KeyValuePair <string, string> >();

            if (!string.IsNullOrWhiteSpace(FilterParameter))
            {
                parameters.Add(BuildParameter(StringConstants.FilterParameter, FilterParameter));
            }

            if (!string.IsNullOrWhiteSpace(SelectParameter))
            {
                parameters.Add(BuildParameter(StringConstants.SelectParameter, SelectParameter));
            }

            if (!string.IsNullOrWhiteSpace(SkipParameter))
            {
                parameters.Add(BuildParameter(StringConstants.SkipParameter, SkipParameter));
            }

            if (!string.IsNullOrWhiteSpace(TakeParameter))
            {
                parameters.Add(BuildParameter(StringConstants.TopParameter, TakeParameter));
            }

            if (OrderByParameter.Any())
            {
                parameters.Add(BuildParameter(StringConstants.OrderByParameter, string.Join(",", OrderByParameter)));
            }

            if (!string.IsNullOrWhiteSpace(ExpandParameter))
            {
                parameters.Add(BuildParameter(StringConstants.ExpandParameter, ExpandParameter));
            }

            if (IncludeCount)
            {
                parameters.Add(BuildParameter("$inlinecount", "allpages"));
            }

            return(parameters);
        }
예제 #4
0
        /// <summary>
        /// 构建查询 Uri.Query 部分。
        /// </summary>
        /// <returns>Uri.Query 部分的字符串。</returns>
        public string BuildUri()
        {
            var parameters = new List <string>();

            if (!string.IsNullOrWhiteSpace(FilterParameter))
            {
                parameters.Add(BuildParameter("$filter", HttpUtility.UrlEncode(FilterParameter)));
            }

            if (!string.IsNullOrWhiteSpace(SelectParameter))
            {
                parameters.Add(BuildParameter("$select", SelectParameter));
            }

            if (!string.IsNullOrWhiteSpace(SkipParameter))
            {
                parameters.Add(BuildParameter("$skip", SkipParameter));
            }

            if (!string.IsNullOrWhiteSpace(TakeParameter))
            {
                parameters.Add(BuildParameter("$top", TakeParameter));
            }

            if (OrderByParameter.Any())
            {
                parameters.Add(BuildParameter("$orderby", string.Join(",", OrderByParameter)));
            }

            if (!string.IsNullOrWhiteSpace(ExpandParameter))
            {
                parameters.Add(BuildParameter("$expand", ExpandParameter));
            }

            return(string.Join("&", parameters));
        }