Beispiel #1
0
        public async Task <Authorize3dResponse> Authorize3d(
            string currency,
            string amount,
            PaymentOption paymentOption,
            string relatedTransactionId,
            List <Item> items                   = null,
            string userTokenId                  = null,
            string clientUniqueId               = null,
            string clientRequestId              = null,
            int?isRebilling                     = null,
            AmountDetails amountDetails         = null,
            DeviceDetails deviceDetails         = null,
            CashierUserDetails userDetails      = null,
            UserAddress shippingAddress         = null,
            UserAddress billingAddress          = null,
            DynamicDescriptor dynamicDescriptor = null,
            MerchantDetails merchantDetails     = null,
            Addendums addendums                 = null,
            UrlDetails urlDetails               = null,
            string customSiteName               = null,
            string productId                    = null,
            string customData                   = null,
            string transactionType              = null,
            bool autoPayment3D                  = default,
            string userId                 = null,
            string rebillingType          = null,
            string authenticationTypeOnly = null,
            SubMerchant subMerchant       = null)
        {
            var request = new Authorize3dRequest(merchantInfo, sessionToken, currency, amount, paymentOption, relatedTransactionId)
            {
                Items                  = items,
                UserTokenId            = userTokenId,
                ClientRequestId        = clientRequestId,
                ClientUniqueId         = clientUniqueId,
                IsRebilling            = isRebilling,
                AmountDetails          = amountDetails,
                DeviceDetails          = deviceDetails,
                UserDetails            = userDetails,
                ShippingAddress        = shippingAddress,
                BillingAddress         = billingAddress,
                DynamicDescriptor      = dynamicDescriptor,
                MerchantDetails        = merchantDetails,
                Addendums              = addendums,
                UrlDetails             = urlDetails,
                CustomSiteName         = customSiteName,
                ProductId              = productId,
                CustomData             = customData,
                TransactionType        = transactionType,
                AutoPayment3D          = autoPayment3D,
                UserId                 = userId,
                RebillingType          = rebillingType,
                AuthenticationTypeOnly = authenticationTypeOnly,
                SubMerchant            = subMerchant
            };

            return(await safechargeRequestExecutor.Authorize3d(request));
        }
        public async Task GoToPage_Original(UrlDetails url)
        {
            if (_issue.Labels.Contains("SomeModifier"))
            {
                // Do something...
            }
            var originalBase = (url.LeftSide.ToLower().Contains("brandone.com")) ? origBaseUrlBrandOne : origBaseUrlBrandTwo;

            await GoToPage(String.Format("{0}{1}", originalBase, url.RightSide));
        }
        public void NavigateTo(UrlDetails url)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            LastNavigatedToUrl = CurrentLocation;
            CurrentLocation    = url;
            RaiseCallbacks(url);
        }
        public MockHistoryHandler(UrlDetails initialUrl)
        {
            if (initialUrl == null)
            {
                throw new ArgumentNullException("initialUrl");
            }

            _navigatedCallbacks = NonNullList <Action <UrlDetails> > .Empty;
            CurrentLocation     = initialUrl;
            LastNavigatedToUrl  = null;
        }
    private void OnRecNewSurfSite(JHSNetworkMessage netMsg)
    {
        UrlDetails packet = netMsg.ReadMessage <UrlDetails>();

        if (packet != null)
        {
            MainCache.Credit      += MainCache.AddCredit;
            MainCache.SurfedSites += 1;
            MainComponent.Core.SendNotification(SHOW_MAIN);
            MainComponent.Core.SendNotification(GOT_NEW_URL, packet);
        }
    }
        private void RaiseCallbacks(UrlDetails url)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            foreach (var callback in _navigatedCallbacks)
            {
                callback(url);
            }
        }
        public void Add_new_url_request_success()
        {
            var urlId      = 99;
            var longUrl    = "http://google.com";
            var urlDetails = new UrlDetails(urlId);

            var url = new Url(longUrl);

            url.SetUrlDetails(urlDetails);
            url.AddNewUrlRequest();

            Assert.NotNull(url);
            Assert.NotEmpty(url.UrlRequests);
        }
Beispiel #8
0
        public async Task <SettleTransactionResponse> SettleTransaction(
            string currency,
            string amount,
            string relatedTransactionId,
            string clientUniqueId               = null,
            string clientRequestId              = null,
            string userId                       = null,
            Addendums addendums                 = null,
            string descriptorMerchantName       = null,
            string descriptorMerchantPhone      = null,
            DynamicDescriptor dynamicDescriptor = null,
            UrlDetails urlDetails               = null,
            string authCode                     = null,
            string customData                   = null,
            string comment                      = null,
            string customSiteName               = null,
            string productId                    = null,
            DeviceDetails deviceDetails         = null,
            string rebillingType                = null,
            string authenticationTypeOnly       = null,
            SubMerchant subMerchant             = null)
        {
            var request = new SettleTransactionRequest(
                merchantInfo,
                sessionToken,
                currency,
                amount,
                relatedTransactionId)
            {
                AuthCode                = authCode,
                ClientUniqueId          = clientUniqueId,
                ClientRequestId         = clientRequestId,
                UserId                  = userId,
                Addendums               = addendums,
                DescriptorMerchantName  = dynamicDescriptor?.MerchantName ?? descriptorMerchantName,
                DescriptorMerchantPhone = dynamicDescriptor?.MerchantPhone ?? descriptorMerchantPhone,
                UrlDetails              = urlDetails,
                CustomData              = customData,
                Comment                 = comment,
                CustomSiteName          = customSiteName,
                ProductId               = productId,
                DeviceDetails           = deviceDetails,
                RebillingType           = rebillingType,
                AuthenticationTypeOnly  = authenticationTypeOnly,
                SubMerchant             = subMerchant
            };

            return(await safechargeRequestExecutor.SettleTransaction(request));
        }
Beispiel #9
0
        public async Task <PayoutResponse> Payout(
            string userTokenId,
            string clientUniqueId,
            string amount,
            string currency,
            UserPaymentOption userPaymentOption,
            string comment = null,
            DynamicDescriptor dynamicDescriptor = null,
            MerchantDetails merchantDetails     = null,
            UrlDetails urlDetails       = null,
            DeviceDetails deviceDetails = null,
            CardData cardData           = null,
            string userId                 = null,
            string rebillingType          = null,
            string authenticationTypeOnly = null,
            SubMerchant subMerchant       = null,
            Addendums addendums           = null)
        {
            var request = new PayoutRequest(
                merchantInfo,
                sessionToken,
                userTokenId,
                clientUniqueId,
                amount,
                currency,
                userPaymentOption)
            {
                Comment                = comment,
                DynamicDescriptor      = dynamicDescriptor,
                MerchantDetails        = merchantDetails,
                UrlDetails             = urlDetails,
                DeviceDetails          = deviceDetails,
                CardData               = cardData,
                UserId                 = userId,
                RebillingType          = rebillingType,
                AuthenticationTypeOnly = authenticationTypeOnly,
                SubMerchant            = subMerchant,
                Addendums              = addendums
            };

            return(await safechargeRequestExecutor.Payout(request));
        }
Beispiel #10
0
 private void AddLinks(UrlDetails urlDetails, string url, int enabled)
 {
     using (SQLiteConnection db = new SQLiteConnection(App.DB_PATH))
     {
         Links linkEntry = new Links()
         {
             Url     = urlDetails.FinalUrl,
             OrigUrl = url,
             Name    = urlDetails.Title,
             Offline = 0,
             Icon    = urlDetails.Icon,
             Enabled = enabled
         };
         db.Insert(linkEntry);
         if (enabled == 1)
         {
             AddArticles(urlDetails);
         }
     }
 }
        public static async Task <CaptureResult> CaptureDiff(UrlDetails url, ITestCaseManager testCaseManager)
        {
            var result = new CaptureResult
            {
                URL = url.RightSide
            };
            // Original Page
            await testCaseManager.GoToPage_Original(url);

            result.Original = await testCaseManager.Browser.TakeScreenshot();

            // Updated Page
            await testCaseManager.GoToPage_Updated(url);

            result.Updated = await testCaseManager.Browser.TakeScreenshot();

            // Compare Image
            var diff = ImageUtils.Compare(result.Original, result.Updated);

            result.Diff       = diff.DiffImage;
            result.Difference = diff.Difference;
            return(result);
        }
Beispiel #12
0
        // SAVE CLICKED - ADD CONTENT TO DB
        private async void _saveButton_Clicked(object sender, EventArgs e)
        {
            using (SQLiteConnection db = new SQLiteConnection(App.DB_PATH))
            {
                db.CreateTable <Links>();       // Make sure database has been created
                db.CreateTable <SocialFeeds>(); // Make sure database has been created

                UrlDetails content = GetUrlAndContents(_linkEntry.Text);
                string[]   lines   = ReadLines(content.Contents);
                foreach (var line in lines) // Loop through all links in social feed
                {
                    string link       = line.Replace("\n", "").Replace("\r", "").Replace("\t", "");
                    Links  linkExists = (from p in db.Table <Links>()
                                         where p.OrigUrl == line
                                         select p).FirstOrDefault();
                    if (linkExists == null) // If social feed doesn't exist in db
                    {
                        UrlDetails _validated = GetUrlAndContents(link);
                        string     _title     = _validated.Title;
                        if (_title != "")
                        {
                            var answer = await DisplayAlert("New Feed Detected", "A new feed has been found, would you like to add: " + _title, "Yes", "No");

                            if (answer)
                            {
                                AddLinks(_validated, line, 1);
                            }
                            else
                            {
                                AddLinks(_validated, line, 0);
                            }
                        }
                    }
                }
            }
            await Navigation.PopAsync();
        }
Beispiel #13
0
        public async Task <InitPaymentResponse> InitPayment(
            string currency,
            string amount,
            InitPaymentPaymentOption paymentOption,
            string userTokenId          = null,
            string clientUniqueId       = null,
            string clientRequestId      = null,
            DeviceDetails deviceDetails = null,
            UrlDetails urlDetails       = null,
            string customData           = null,
            UserAddress billingAddress  = null,
            string userId                 = null,
            string rebillingType          = null,
            string authenticationTypeOnly = null,
            SubMerchant subMerchant       = null,
            Addendums addendums           = null,
            string orderId                = null)
        {
            var request = new InitPaymentRequest(merchantInfo, sessionToken, currency, amount, paymentOption)
            {
                UserTokenId            = userTokenId,
                ClientRequestId        = clientRequestId,
                ClientUniqueId         = clientUniqueId,
                DeviceDetails          = deviceDetails,
                UrlDetails             = urlDetails,
                CustomData             = customData,
                BillingAddress         = billingAddress,
                UserId                 = userId,
                RebillingType          = rebillingType,
                AuthenticationTypeOnly = authenticationTypeOnly,
                SubMerchant            = subMerchant,
                Addendums              = addendums,
                OrderId                = orderId
            };

            return(await safechargeRequestExecutor.InitPayment(request));
        }
Beispiel #14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RequestMessage"/> class.
        /// </summary>
        /// <param name="urlDetails">The original url details.</param>
        /// <param name="method">The HTTP method.</param>
        /// <param name="clientIP">The client IP Address.</param>
        /// <param name="bodyData">The BodyData.</param>
        /// <param name="headers">The headers.</param>
        /// <param name="cookies">The cookies.</param>
        public RequestMessage([NotNull] UrlDetails urlDetails, [NotNull] string method, [NotNull] string clientIP, [CanBeNull] BodyData bodyData = null, [CanBeNull] IDictionary <string, string[]> headers = null, [CanBeNull] IDictionary <string, string> cookies = null)
        {
            Check.NotNull(urlDetails, nameof(urlDetails));
            Check.NotNull(method, nameof(method));
            Check.NotNull(clientIP, nameof(clientIP));

            AbsoluteUrl = urlDetails.AbsoluteUrl.ToString();
            Url         = urlDetails.Url.ToString();
            Protocol    = urlDetails.Url.Scheme;
            Host        = urlDetails.Url.Host;
            Port        = urlDetails.Url.Port;
            Origin      = $"{Protocol}://{Host}:{Port}";

            AbsolutePath         = WebUtility.UrlDecode(urlDetails.AbsoluteUrl.AbsolutePath);
            Path                 = WebUtility.UrlDecode(urlDetails.Url.AbsolutePath);
            PathSegments         = Path.Split('/').Skip(1).ToArray();
            AbsolutePathSegments = AbsolutePath.Split('/').Skip(1).ToArray();

            Method   = method;
            ClientIP = clientIP;

            BodyData = bodyData;

            // Convenience getters for e.g. Handlebars
            Body             = BodyData?.BodyAsString;
            BodyAsJson       = BodyData?.BodyAsJson;
            BodyAsBytes      = BodyData?.BodyAsBytes;
            DetectedBodyType = BodyData?.DetectedBodyType.ToString();
            DetectedBodyTypeFromContentType = BodyData?.DetectedBodyTypeFromContentType.ToString();
            DetectedCompression             = BodyData?.DetectedCompression;

            Headers  = headers?.ToDictionary(header => header.Key, header => new WireMockList <string>(header.Value));
            Cookies  = cookies;
            RawQuery = urlDetails.Url.Query;
            Query    = QueryStringParser.Parse(RawQuery);
        }
Beispiel #15
0
        public async Task <OpenOrderResponse> OpenOrder(

            string currency,
            string amount,
            List <Item> items = null,
            OpenOrderPaymentOption paymentOption = null,
            UserPaymentOption userPaymentOption  = null,
            string paymentMethod                = null,
            string userTokenId                  = null,
            string clientUniqueId               = null,
            string clientRequestId              = null,
            string userId                       = null,
            string authenticationTypeOnly       = null,
            AmountDetails amountDetails         = null,
            DeviceDetails deviceDetails         = null,
            CashierUserDetails userDetails      = null,
            UserAddress shippingAddress         = null,
            UserAddress billingAddress          = null,
            DynamicDescriptor dynamicDescriptor = null,
            MerchantDetails merchantDetails     = null,
            Addendums addendums                 = null,
            UrlDetails urlDetails               = null,
            string customSiteName               = null,
            string productId                    = null,
            string customData                   = null,
            string transactionType              = null,
            string isMoto                       = null,
            string isRebilling                  = null,
            string rebillingType                = null,
            SubMerchant subMerchant             = null)
        {
            var request = new OpenOrderRequest(merchantInfo, sessionToken, currency, amount)
            {
                Items                  = items,
                PaymentOption          = paymentOption,
                UserPaymentOption      = userPaymentOption,
                PaymentMethod          = paymentMethod,
                UserTokenId            = userTokenId,
                ClientRequestId        = clientRequestId,
                ClientUniqueId         = clientUniqueId,
                UserId                 = userId,
                AuthenticationTypeOnly = authenticationTypeOnly,
                AmountDetails          = amountDetails,
                DeviceDetails          = deviceDetails,
                UserDetails            = userDetails,
                ShippingAddress        = shippingAddress,
                BillingAddress         = billingAddress,
                DynamicDescriptor      = dynamicDescriptor,
                MerchantDetails        = merchantDetails,
                Addendums              = addendums,
                UrlDetails             = urlDetails,
                CustomSiteName         = customSiteName,
                ProductId              = productId,
                CustomData             = customData,
                TransactionType        = transactionType,
                IsMoto                 = isMoto,
                IsRebilling            = isRebilling,
                RebillingType          = rebillingType,
                SubMerchant            = subMerchant
            };

            return(await safechargeRequestExecutor.OpenOrder(request));
        }
Beispiel #16
0
        private void Build()
        {
            #region Initial-Values

            TimestampUtc = DateTime.Now.ToUniversalTime();
            Source       = new SourceDetails(Common.IpFromIpPort(_IpPort), Common.PortFromIpPort(_IpPort));
            ThreadId     = Thread.CurrentThread.ManagedThreadId;

            #endregion

            #region Convert-to-String-List

            string[] headers = _RequestHeader.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);

            #endregion

            #region Process-Each-Line

            for (int i = 0; i < headers.Length; i++)
            {
                if (i == 0)
                {
                    #region First-Line

                    string[] requestLine = headers[i].Trim().Trim('\0').Split(' ');
                    if (requestLine.Length < 3)
                    {
                        throw new ArgumentException("Request line does not contain at least three parts (method, raw URL, protocol/version).");
                    }

                    Method = (HttpMethod)Enum.Parse(typeof(HttpMethod), requestLine[0], true);
                    Url    = new UrlDetails(requestLine[1]);
                    Query  = new QueryDetails(requestLine[1]);

                    ProtocolVersion = requestLine[2];

                    #endregion
                }
                else
                {
                    #region Subsequent-Line

                    string[] headerLine = headers[i].Split(':');
                    if (headerLine.Length == 2)
                    {
                        string key = headerLine[0].Trim();
                        string val = headerLine[1].Trim();

                        if (String.IsNullOrEmpty(key))
                        {
                            continue;
                        }
                        string keyEval = key.ToLower();

                        if (keyEval.Equals("keep-alive"))
                        {
                            Keepalive = Convert.ToBoolean(val);
                        }
                        else if (keyEval.Equals("user-agent"))
                        {
                            Useragent = val;
                        }
                        else if (keyEval.Equals("content-length"))
                        {
                            ContentLength = Convert.ToInt32(val);
                        }
                        else if (keyEval.Equals("content-type"))
                        {
                            ContentType = val;
                        }

                        Headers = Common.AddToDict(key, val, Headers);
                    }

                    #endregion
                }
            }

            #endregion

            #region Payload

            _DataStream = _Stream;

            #endregion
        }
 public async Task GoToPage_Updated(UrlDetails url)
 {
     await Browser.GoToPage(String.Format("{0}{1}", StageBaseUrl, url.RightSide));
 }
 public async Task GoToPage_Original(UrlDetails url)
 {
     await Browser.GoToPage(String.Format("{0}{1}", ProdBaseUrl, url.RightSide));
 }
        public static void Go()
        {
            QUnit.Module("QueryString Parsing");

            QUnit.Test("Match ''", assert =>
            {
                var rawQueryString = "";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 0);
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Test("Match 'x=1'", assert =>
            {
                var rawQueryString = "x=1";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 1);
                assert.OptionalEqual(queryString["x"][0], "1");
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Test("Match '?x=1'", assert =>
            {
                assert.Throws(() => QueryString.Parse("?x=1"), "The QueryString should not include the leading '?' character");
            });

            QUnit.Test("Match 'x=1&x=2'", assert =>
            {
                var rawQueryString = "x=1&x=2";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 2);
                assert.OptionalEqual(queryString["x"][0], "1");
                assert.OptionalEqual(queryString["x"][1], "2");
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Test("Match 'x=1&y=&z'", assert =>
            {
                var rawQueryString = "x=1&y=&z";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 1);
                assert.OptionalEqual(queryString["x"][0], "1");
                assert.Equal(queryString["y"].Count, 1);
                assert.OptionalEqual(queryString["y"][0], "");
                assert.Equal(queryString["z"].Count, 1);
                assert.OptionalEqual(queryString["z"][0], Optional <string> .Missing);
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Test("Match 'x=test%20value'", assert =>
            {
                var rawQueryString = "x=test%20value";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 1);
                assert.OptionalEqual(queryString["x"][0], "test value");
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Test("Match '%20%20x=test%20value'", assert =>
            {
                var rawQueryString = "%20%20x=test%20value";
                var queryString    = QueryString.Parse(rawQueryString);
                assert.Equal(queryString["x"].Count, 0);
                assert.Equal(queryString["  x"].Count, 1);
                assert.OptionalEqual(queryString["  x"][0], "test value");
                assert.Equal(queryString.ToString(), rawQueryString);
            });

            QUnit.Module("QueryString Manipulating");

            QUnit.Test("Add 'x=2' to 'x=1'", assert =>
            {
                var queryString = QueryString.Parse("x=1").Add("x", "2");
                assert.Equal(queryString["x"].Count, 2);
                assert.OptionalEqual(queryString["x"][0], "1");
                assert.OptionalEqual(queryString["x"][1], "2");
                assert.Equal(queryString.ToString(), "x=1&x=2");
            });

            QUnit.Test("Remove 'x' from 'x=1&x=2'", assert =>
            {
                var queryString = QueryString.Parse("x=1&x=2").RemoveIfPresent("x");
                assert.Equal(queryString["x"].Count, 0);
                assert.Equal(queryString.ToString(), "");
            });

            // This tests a fix around AddToQueryIfDefined where NonBlankTrimmedString is used, since NonBlankTrimmedString became an [ObjectLiteral]
            QUnit.Test("Test ToString() after call AddToQueryIfDefined with NonBlankTrimmedString", assert =>
            {
                var url = new UrlDetails(NonNullList.Of(new NonBlankTrimmedString("home"))).AddToQueryIfDefined("q", Optional.For(new NonBlankTrimmedString("test")));
                assert.Equal(url.ToString(), "/home?q=test");
            });
        }
Beispiel #20
0
        /// <summary>
        /// HTTP request.
        /// Instantiate the object using an HttpListenerContext.
        /// </summary>
        /// <param name="ctx">HttpListenerContext.</param>
        public HttpRequest(HttpListenerContext ctx)
        {
            if (ctx == null)
            {
                throw new ArgumentNullException(nameof(ctx));
            }
            if (ctx.Request == null)
            {
                throw new ArgumentNullException(nameof(ctx.Request));
            }

            ListenerContext = ctx;
            Keepalive       = ctx.Request.KeepAlive;
            ContentLength   = ctx.Request.ContentLength64;
            Useragent       = ctx.Request.UserAgent;
            ContentType     = ctx.Request.ContentType;

            _Uri = new Uri(ctx.Request.Url.ToString().Trim());

            ThreadId        = Thread.CurrentThread.ManagedThreadId;
            TimestampUtc    = DateTime.Now.ToUniversalTime();
            ProtocolVersion = "HTTP/" + ctx.Request.ProtocolVersion.ToString();
            Source          = new SourceDetails(ctx.Request.RemoteEndPoint.Address.ToString(), ctx.Request.RemoteEndPoint.Port);
            Destination     = new DestinationDetails(ctx.Request.LocalEndPoint.Address.ToString(), ctx.Request.LocalEndPoint.Port, _Uri.Host);
            Method          = (HttpMethod)Enum.Parse(typeof(HttpMethod), ctx.Request.HttpMethod, true);
            Url             = new UrlDetails(ctx.Request.Url.ToString().Trim(), ctx.Request.RawUrl.ToString().Trim());
            Query           = new QueryDetails(Url.Full);

            Headers = new Dictionary <string, string>();
            for (int i = 0; i < ctx.Request.Headers.Count; i++)
            {
                string key = ctx.Request.Headers.GetKey(i);
                string val = ctx.Request.Headers.Get(i);
                Headers = AddToDict(key, val, Headers);
            }

            foreach (KeyValuePair <string, string> curr in Headers)
            {
                if (String.IsNullOrEmpty(curr.Key))
                {
                    continue;
                }
                if (String.IsNullOrEmpty(curr.Value))
                {
                    continue;
                }

                if (curr.Key.ToLower().Equals("transfer-encoding"))
                {
                    if (curr.Value.ToLower().Contains("chunked"))
                    {
                        ChunkedTransfer = true;
                    }
                    if (curr.Value.ToLower().Contains("gzip"))
                    {
                        Gzip = true;
                    }
                    if (curr.Value.ToLower().Contains("deflate"))
                    {
                        Deflate = true;
                    }
                }
            }

            Data = ctx.Request.InputStream;
        }
        public async Task GoToPage_Updated(UrlDetails url)
        {
            var updatedBase = (url.LeftSide.ToLower().Contains("brandone.com")) ? updatedBaseUrlBrandOne : updatedBaseUrlBrandTwo;

            await GoToPage(String.Format("{0}{1}", updatedBase, url.RightSide));
        }