AdjustSdk.Pcl.ActivityHandler.OpenUrlInternal C# (CSharp) Method

OpenUrlInternal() private method

private OpenUrlInternal ( Uri uri ) : void
uri System.Uri
return void
        private void OpenUrlInternal(Uri uri)
        {
            if (uri == null) return;

            var sUri = Uri.UnescapeDataString(uri.ToString());

            var windowsPhone80Protocol = "/Protocol?";
            if (sUri.StartsWith(windowsPhone80Protocol))
            {
                sUri = sUri.Substring(windowsPhone80Protocol.Length);
            }

            var queryStringIdx = sUri. IndexOf("?");
            // check if '?' exists and it's not the last char
            if (queryStringIdx == -1 || queryStringIdx + 1 == sUri.Length) return;

            var queryString = sUri.Substring(queryStringIdx + 1);

            // remove any possible fragments
            var fragmentIdx = queryString.LastIndexOf("#");
            if (fragmentIdx != -1)
            {
                queryString = queryString.Substring(0, fragmentIdx);
            }

            var queryPairs = queryString.Split('&');
            var extraParameters = new Dictionary<string, string>(queryPairs.Length);
            var attribution = new AdjustAttribution();
            bool hasAdjustTags = false;

            foreach (var pair in queryPairs)
            {
                if (ReadQueryString(pair, extraParameters, attribution))
                {
                    hasAdjustTags = true;
                }
            }

            if (!hasAdjustTags) { return; }

            var clickPackage = GetDeeplinkClickPackage(extraParameters, attribution);
            PackageHandler.AddPackage(clickPackage);
            PackageHandler.SendFirstPackage();
        }