示例#1
0
        /// <summary>
        /// Generates the needed url depending on values delivered from UI
        /// </summary>
        /// <param name="locations"></param>
        /// <returns></returns>
        private string GenerateUrl(IEnumerable <LocationDto> locations)
        {
            if (locations == null || locations.Count() < 2)
            {
                return(null);
            }

            QueryStringBuilder qsb = new QueryStringBuilder();

            qsb.Append(baseUrl);

            var origin = locations.Where(x => x.LocationType == LocationType.Origin).FirstOrDefault();

            qsb.Append("origin", origin.FormatedLatLon);

            var destination = locations.Where(x => x.LocationType == LocationType.Destination).FirstOrDefault();

            qsb.Append("destination", destination.FormatedLatLon);

            var waypoints = locations.Where(x => x.LocationType == LocationType.WayPoint);

            qsb.Append("waypoints", GetWayPoints(waypoints));

            return(qsb.ToString());
        }
        public override Uri ToUri()
        {
            if (Address == null)
            {
                throw new InvalidOperationException("Address is required");
            }

            var qsb = new QueryStringBuilder();

            if (Address != null)
            {
                if (Address.GetType() == typeof(LatLng))
                {
                    qsb.Append("latlng", Address.GetAsUrlParameter());
                }
                else if (Address.GetType() == typeof(PlaceIdLocation))
                {
                    qsb.Append("place_id", Address.GetAsUrlParameter());
                }
                else
                {
                    qsb.Append("address", Address.GetAsUrlParameter());
                }
            }

            qsb.Append("bounds", GetBoundsStr())
            .Append("components", Components != null ? Components.ToUrlParameters() : "")
            .Append("region", Region)
            .Append("language", Language);

            var url = "json?" + qsb;

            return(new Uri(url, UriKind.Relative));
        }
示例#3
0
        public override Uri ToUri()
        {
            var qsb = new QueryStringBuilder();

            if (!string.IsNullOrEmpty(PlaceID))
            {
                qsb.Append("placeid", PlaceID);
            }
#pragma warning disable CS0618 // Type or member is obsolete
            else if (!string.IsNullOrEmpty(Reference))
            {
                qsb.Append("reference", Reference);
            }
#pragma warning restore CS0618 // Type or member is obsolete
            else
            {
                throw new InvalidOperationException("Either PlaceID or Reference fields must be set.");
            }

            if (!string.IsNullOrEmpty(Extensions))
            {
                qsb.Append("extensions", Extensions);
            }

            if (!string.IsNullOrEmpty(Language))
            {
                qsb.Append("language", Language);
            }

            var url = "json?" + qsb;

            return(new Uri(url, UriKind.Relative));
        }
        public void can_build_query_string_with_multiple_items()
        {
            var qs = new QueryStringBuilder();

            qs.Append("hello", "world");
            qs.Append("goodbye", "loneliness");
            Assert.Equal("?hello=world&goodbye=loneliness", qs.ToString());
        }
        public override Uri ToUri()
        {
            ValidateRequest();
            var qsb = new QueryStringBuilder();

            qsb.Append("query", Uri.EscapeDataString(Query.ToLowerInvariant()));

            if (Location != null)
            {
                qsb.Append("location", Location.GetAsUrlParameter());
            }

            if (Radius.HasValue)
            {
                qsb.Append("radius", Radius.Value.ToString());
            }

            if (!string.IsNullOrEmpty(Language))
            {
                qsb.Append("language", Language.ToLowerInvariant());
            }

            if (Minprice.HasValue)
            {
                qsb.Append("minprice", Minprice.Value.ToString());
            }

            if (Maxprice.HasValue)
            {
                qsb.Append("maxprice", Maxprice.Value.ToString());
            }

            if (OpenNow.HasValue)
            {
                qsb.Append("opennow", OpenNow.Value.ToString().ToLowerInvariant());
            }

            if (!string.IsNullOrEmpty(PageToken))
            {
                qsb.Append("pagetoken", PageToken);
            }

            if (Types != null && Types.Any())
            {
                qsb.Append("types", TypesToUri());
            }

            if (ZagatSelected)
            {
                qsb.Append("zagatselected");
            }

            var url = "textsearch/json?" + qsb;

            return(new Uri(url, UriKind.Relative));
        }
        public void can_build_query_string_with_multiple_same_key_items()
        {
            var qs = new QueryStringBuilder();

            qs.Append("hello", "world");
            qs.Append("hello", "universe");
            qs.Append("answer", "42");

            Assert.Equal("?hello=world&hello=universe&answer=42", qs.ToString());
        }
        public void can_remove_query_parameters()
        {
            var qs = new QueryStringBuilder();

            qs.Append("hello", "world");
            qs.Append("hello", "universe");
            qs.Append("answer", "42");

            qs.Remove("hello");

            Assert.Equal("?answer=42", qs.ToString());
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="transactionCode">Transaction Code</param>
        /// <param name="refundValue">Refund Value</param>
        /// <returns></returns>
        private static string BuildRefundURL(Credentials credentials, string transactionCode, decimal?refundValue)
        {
            QueryStringBuilder builder = new QueryStringBuilder();

            builder.EncodeCredentialsAsQueryString(credentials);
            builder.Append("transactionCode", transactionCode);
            if (refundValue.HasValue)
            {
                builder.Append("refundValue", PagSeguroUtil.DecimalFormat(refundValue.Value));
            }

            return(builder.ToString());
        }
示例#9
0
        public IJoinedQueryBuilder <TEntity, T> InnerJoin <T>(string alias)
        {
            string typeName = typeof(T).Name;

            QueryStringBuilder.Append($" INNER JOIN {StringToolkit.PascalToUnderscore(typeName)} {alias} ");
            return(new JoinedQueryBuilder <TEntity, T>(this));
        }
示例#10
0
        public ISelectQueryBuilder <TEntity> Having(Expression <Func <TEntity, bool> > predicate)
        {
            string havingStr = ExpressionEvaluator.BuildWhereQueryString(predicate).Replace("WHERE", "HAVING");

            QueryStringBuilder.Append($" {havingStr}");
            return(this);
        }
示例#11
0
        public void can_build_query_string_with_single_item_without_value()
        {
            var qs = new QueryStringBuilder();

            qs.Append("hello");
            Assert.Equal("?hello", qs.ToString());
        }
        public ISortableQueryBuilder <TEntity> OrderByDescending(Expression <Func <TEntity, object> > key)
        {
            string order = ExpressionEvaluator.BuildOrderByQueryString(key, true);

            QueryStringBuilder.Append($" {order}");
            return(this);
        }
        public IJoinedQueryBuilder <TEntity, T1> On(Expression <Func <TEntity, T1, bool> > predicate)
        {
            string onStr = ExpressionEvaluator.BuildOnConditionString(predicate);

            RefactorAlias(predicate);
            QueryStringBuilder.Append($"{onStr}");
            return(this);
        }
        public void QueryString_AppendParam_Check_If_Exists_Should_Have_Count_Equal_To_One(string variable, string value)
        {
            var queryStringBuilder = new QueryStringBuilder();

            queryStringBuilder.Append(variable, value);

            Assert.Equal(1, queryStringBuilder.Count);
        }
示例#15
0
        /// <exception cref="ArgumentException">Thrown when <paramref name="userId"/> is null or empty</exception>>
        public async Task <DeviceList> GetDevicesForUser(string userId, string clientId = null)
        {
            ArgumentGuard.NotNullOrEmpty(userId, nameof(userId));

            var endpoint = QueryStringBuilder.Append($"/v1/users/{userId}/devices", "client_id", clientId);

            return(await TryRequest(() => _messageSender.Get <DeviceList>(endpoint)));
        }
        public ISortableQueryBuilder <TEntity> ThenBy(Expression <Func <TEntity, object> > key)
        {
            string order = ExpressionEvaluator.BuildOrderByQueryString(key, false)
                           .Replace("ORDER BY", "THEN BY");

            QueryStringBuilder.Append($" {order}");
            return(this);
        }
        public IJoinedQueryBuilder <TEntity, T1> Where(Expression <Func <TEntity, T1, bool> > predicate)
        {
            string whereStr = ExpressionEvaluator.BuildWhereQueryString(predicate);

            RefactorAlias(predicate);
            QueryStringBuilder.Append($" {whereStr}");
            return(this);
        }
        ISortableQueryBuilder <TEntity> ISortableQueryBuilder <TEntity> .Where(Expression <Func <TEntity, bool> > predicate)
        {
            string whereString = ExpressionEvaluator.BuildWhereQueryString(predicate);

            RefactorAlias(predicate);
            QueryStringBuilder.Append($" {whereString}");
            return(this);
        }
        public override Uri ToUri()
        {
            if (Path == null || !Path.Any())
            {
                throw new InvalidOperationException("Path is required");
            }

            var qsb = new QueryStringBuilder();

            qsb.Append("path", string.Join("|", Path.AsEnumerable()));

            qsb.Append("interpolate", Interpolate ? "true" : "false");

            var url = "snapToRoads?" + qsb;

            return(new Uri(url, UriKind.Relative));
        }
示例#20
0
        public void can_build_query_string_with_base_uri()
        {
            var qs = new QueryStringBuilder("https://example.com/");

            qs.Append("hello", "world");

            Assert.Equal("https://example.com/?hello=world", qs.ToString());
        }
示例#21
0
        /// <summary>
        /// Builds the request uri parameters
        /// </summary>
        /// <returns></returns>
        public override Uri ToUri()
        {
            QueryStringBuilder qs = new QueryStringBuilder();

            //string zoomStr = null;
            //if(this.Zoom != null)
            //	zoomStr = this.Zoom.ToString();

            //if(this.Center != null) {
            //	string centerStr = this.Center.GetAsUrlParameter();
            //	qs.Append("center", centerStr);
            //}

            if (this.Location != null)
            {
                qs.Append("location", this.Location.GetAsUrlParameter());
            }
            else if (string.IsNullOrEmpty(this.PanoramaId) == false)
            {
                qs.Append("pano", this.PanoramaId);
            }
            else
            {
                throw new InvalidOperationException("Either Location or PanoramaId property are required.");
            }

            WriteBitmapOutputParameters(qs);

            var InvariantCulture = System.Globalization.CultureInfo.InvariantCulture;

            if (this.Pitch != 0)
            {
                qs.Append("pitch", Pitch.ToString(InvariantCulture));
            }

            if (this.Heading != null && this.Heading.GetValueOrDefault(0) != 0)
            {
                qs.Append("heading", Heading.Value.ToString(InvariantCulture));
            }


            var url = "streetview?" + qs.ToString();

            return(new Uri(StreetViewService.HttpsUri, new Uri(url, UriKind.Relative)));
        }
        public void QueryStringBuilder_AppendParam_Should_Throw_Error_If_Variable_Or_Value_Is_Empty_Or_Null(string variable, string value)
        {
            var queryStringBuilder = new QueryStringBuilder();

            Assert.Throws <ArgumentNullException>(() =>
            {
                queryStringBuilder.Append(variable, value);
            });
        }
        public void QueryStringBuilder_AppendParam_Should_Start_With_QuestionMarkSymbol()
        {
            var queryStringBuilder = new QueryStringBuilder();

            var queryString = queryStringBuilder.Append("var1", "val1")
                              .Build();

            Assert.StartsWith("?", queryString);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="transactionCode">Transaction Code</param>
        /// <returns></returns>
        private static string BuildCancelURL(Credentials credentials, string transactionCode)
        {
            QueryStringBuilder builder = new QueryStringBuilder();

            builder.EncodeCredentialsAsQueryString(credentials);
            builder.Append("transactionCode", transactionCode);

            return(builder.ToString());
        }
 internal static string EncodeCredentialsAsQueryString(Credentials credentials)
 {
     QueryStringBuilder builder = new QueryStringBuilder();
     foreach (CredentialsNameValuePair nv in credentials.Attributes)
     {
         builder.Append(nv.Name, nv.Value);
     }
     return builder.ToString();
 }
示例#26
0
        private void WriteBitmapOutputParameters(QueryStringBuilder qs)
        {
            string formatStr = null;

            switch (this.Format)
            {
            case GMapsImageFormats.Unspecified: break;

            case GMapsImageFormats.JPGbaseline: formatStr = "jpg-baseline"; break;

            default: formatStr = this.Format.ToString().ToLower(); break;
            }

            qs.Append("format", formatStr);

            qs.Append("size", string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}x{1}", Size.Width, Size.Height));

            //qs.Append("scale", Scale == null ? (string)null : Scale.Value.ToString())
        }
示例#27
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        internal static string buildAuthorizationRequestUrl(Credentials credentials, AuthorizationRequest authorizationRequest)
        {
            QueryStringBuilder           builder = new QueryStringBuilder();
            IDictionary <string, string> data    = AuthorizationParse.GetData(authorizationRequest);

            builder.
            EncodeCredentialsAsQueryString(credentials);

            foreach (KeyValuePair <string, string> pair in data)
            {
#if !NETSTANDARD1_6
                builder.Append(pair.Key, pair.Value.ToString(CultureInfo.InvariantCulture));
#else
                builder.Append(pair.Key, pair.Value);
#endif
            }

            return(WebUtility.UrlDecode(builder.ToString()));
        }
示例#28
0
        public void Should_append_with_ampersand_if_not_first_param()
        {
            const string url      = "http://test.com?other_param=other_value";
            const string key      = "my_param";
            const string value    = "my_value";
            const string expected = "http://test.com?other_param=other_value&my_param=my_value";

            var result = QueryStringBuilder.Append(url, key, value);

            result.Should().Be(expected);
        }
示例#29
0
        public void Should_not_append_empty_value()
        {
            const string url      = "http://test.com";
            const string key      = "my_param";
            const string value    = null;
            const string expected = "http://test.com";

            var result = QueryStringBuilder.Append(url, key, value);

            result.Should().Be(expected);
        }
示例#30
0
        public void Should_append_with_questionmark_if_first_param()
        {
            const string url      = "http://test.com";
            const string key      = "my_param";
            const string value    = "my_value";
            const string expected = "http://test.com?my_param=my_value";

            var result = QueryStringBuilder.Append(url, key, value);

            result.Should().Be(expected);
        }
示例#31
0
        /// <summary>
        /// Generates the needed url depending on values delivered from UI
        /// </summary>
        /// <param name="locations"></param>
        /// <returns></returns>
        private string GenerateUrl(IEnumerable <LocationDto> locations)
        {
            if (locations == null || locations.Count() == 0)
            {
                return(null);
            }

            QueryStringBuilder qsb = new QueryStringBuilder();

            qsb.Append(baseUrl);

            // if only one location is selected, center the location and zoom to factor 15
            if (locations.Count() == 1)
            {
                qsb.Append("zoom", "15");
                qsb.Append("center", locations.First().FormatedLatLon);
            }

            int counter = 0;
            var color   = "red";
            var label   = "V";

            foreach (var item in locations)
            {
                if (item.LocationType == LocationType.Origin)
                {
                    color = "blue"; label = "S";
                }
                else if (item.LocationType == LocationType.Destination)
                {
                    color = "green"; label = "Z";
                }
                else if (item.LocationType == LocationType.WayPoint)
                {
                    color = "red"; label = "V";
                }
                qsb.Append("markers", GetMarker(item, color, label));
                counter++;
            }
            return(qsb.ToString());
        }
        /// <summary>
        /// Common implmentation of all SearchByDate methods
        /// </summary>
        /// <param name="credentials">PagSeguro credentials. Required.</param>
        /// <param name="initialDate"></param>
        /// <param name="finalDate">End of date range. Use DateTime.MaxValue to search without an upper boundary.</param>
        /// <param name="pageNumber">Page number, starting with 1. If passed as 0, it will call the web service to get the default page, also page number 1.</param>
        /// <param name="resultsPerPage">Results per page, optional.</param>
        /// <returns></returns>
        private static TransactionSearchResult SearchByDateCore(Credentials credentials, DateTime initialDate, DateTime finalDate, int pageNumber, int resultsPerPage)
        {
            UriBuilder uriBuilder = new UriBuilder(PagSeguroConfiguration.SearchUri);

            QueryStringBuilder query = new QueryStringBuilder(ServiceHelper.EncodeCredentialsAsQueryString(credentials));

            query.Append(InitialDateParameterName, initialDate);

            if (finalDate < DateTime.MaxValue)
            {
                query.Append(FinalDateParameterName, finalDate);
            }

            if (pageNumber > 0)
            {
                query.Append(PageNumberParameterName, pageNumber);
            }

            if (resultsPerPage > 0)
            {
                query.Append(MaxPageResultsParameterName, resultsPerPage);
            }

            uriBuilder.Query = query.ToString();

            PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "TransactionSearchService.SearchByDate(initialDate={0}, finalDate={1}) - begin", initialDate, finalDate));

            WebRequest request = WebRequest.Create(uriBuilder.Uri);
            request.Method = ServiceHelper.GetMethod;
            request.Timeout = PagSeguroConfiguration.RequestTimeout;

            try
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
                    {
                        TransactionSearchResult result = new TransactionSearchResult();
                        TransactionSearchResultSerializer.Read(reader, result);
                        PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "TransactionSearchService.SearchByDate(initialDate={0}, finalDate={1}) - end {2}", initialDate, finalDate, result));
                        return result;
                    }
                }
            }
            catch (WebException exception)
            {
                PagSeguroServiceException pse = ServiceHelper.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
                PagSeguroTrace.Error(String.Format(CultureInfo.InvariantCulture, "TransactionSearchService.SearchByDate(initialDate={0}, finalDate={1}) - error {2}", initialDate, finalDate, pse));
                throw pse;
            }
        }