BoxKite.Twitter.UserSession.BuildAuthenticatedResult C# (CSharp) Метод

BuildAuthenticatedResult() приватный Метод

private BuildAuthenticatedResult ( string fullUrl, string>.IEnumerable parameters, string method, bool multipartform = false ) : OAuth
fullUrl string
parameters string>.IEnumerable
method string
multipartform bool
Результат OAuth
        private OAuth BuildAuthenticatedResult(string fullUrl, IEnumerable<KeyValuePair<string, string>> parameters,
            string method, bool multipartform = false)
        {
            var url = fullUrl;

            var oauthToken = _credentials.Token;
            var oauthConsumerKey = _credentials.ConsumerKey;
            var oauthNonce = GenerateNoonce();

            var oauthTimestamp = GenerateTimestamp();

            //GS - When building the signature string the params
            //must be in alphabetical order. I can't be bothered
            //with that, get SortedDictionary to do it's thing
            var sd = new SortedDictionary<string, string>
            {
                {"oauth_consumer_key", oauthConsumerKey},
                {"oauth_nonce", oauthNonce},
                {"oauth_signature_method", OAuthSignatureMethod},
                {"oauth_timestamp", oauthTimestamp},
                {"oauth_token", oauthToken},
                {"oauth_version", OAuthVersion}
            };

            var querystring = "";

            var baseString = method.ToUpper() + "&" + Uri.EscapeDataString(url) + "&";

            if (!multipartform) // with Multi-part form, only the oauth_ headers are used to create the signature
            {
                if (method.Equals("GET", StringComparison.OrdinalIgnoreCase))
                {
                    querystring = parameters.Aggregate(querystring,
                        (current, entry) => current + (entry.Key + "=" + entry.Value + "&"));
                }

                foreach (var entry in parameters)
                    sd.Add(entry.Key, entry.Value);
            }

            foreach (var entry in sd)
            {
                string value;
                if (entry.Key == "status" || entry.Key == "text" || entry.Key == "screen_name" ||
                    entry.Key == "user_id" || entry.Key == "track" || entry.Key == "follow" ||
                    entry.Key == "locations")
                {
                    value = Uri.EscapeDataString(entry.Value);
                }
                else
                {
                    value = entry.Value;
                }

                baseString += Uri.EscapeDataString(entry.Key + "=" + value + "&");
            }

            baseString = baseString.Substring(0, baseString.Length - 3);

            var signingKey = Uri.EscapeDataString(_credentials.ConsumerSecret) + "&" +
                             Uri.EscapeDataString(_credentials.TokenSecret);

            var encoding = Encoding.UTF8;
            PlatformAdaptor.AssignKey(encoding.GetBytes(signingKey));
            var data = Encoding.UTF8.GetBytes(baseString);
            var hash = PlatformAdaptor.ComputeHash(data);
            var signatureString = Convert.ToBase64String(hash);
            return new OAuth
            {
                Nonce = oauthNonce,
                SignatureMethod = OAuthSignatureMethod,
                Timestamp = oauthTimestamp,
                ConsumerKey = oauthConsumerKey,
                Token = oauthToken,
                SignatureString = signatureString,
                Version = OAuthVersion,
                Header = string.Format(
                    "OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"{1}\", oauth_timestamp=\"{2}\", oauth_consumer_key=\"{3}\", oauth_token=\"{4}\", oauth_signature=\"{5}\", oauth_version=\"{6}\"",
                    Uri.EscapeDataString(oauthNonce),
                    Uri.EscapeDataString(OAuthSignatureMethod),
                    Uri.EscapeDataString(oauthTimestamp),
                    Uri.EscapeDataString(oauthConsumerKey),
                    Uri.EscapeDataString(oauthToken),
                    Uri.EscapeDataString(signatureString),
                    Uri.EscapeDataString(OAuthVersion))
            };

        }