Пример #1
0
        public bool Login()
        {
            var token  = Globals.Instance.TwitterToken;
            var secret = Globals.Instance.TwitterSecret;

            if (string.IsNullOrWhiteSpace(token) || string.IsNullOrWhiteSpace(secret))
            {
                this.OAuth = new OAuth(Consumer_Key, Consumer_Secret);
                return false;
            }
            else
            {
                this.OAuth = new OAuth(Consumer_Key, Consumer_Secret, token, secret);
                return true;
            }
        }
Пример #2
0
        public WebRequest MakeRequest(string method, string url, object data = null)
        {
            method = method.ToUpper();
            var uri = new Uri(url);
            var dic = new SortedDictionary <string, object>();

            if (!string.IsNullOrWhiteSpace(uri.Query))
            {
                OAuth.AddDictionary(dic, uri.Query);
            }

            if (data != null)
            {
                OAuth.AddDictionary(dic, data);
            }

            if (!string.IsNullOrWhiteSpace(this.User.Token))
            {
                dic.Add("oauth_token", UrlEncode(this.User.Token));
            }

            dic.Add("oauth_consumer_key", UrlEncode(this.App.Token));
            dic.Add("oauth_nonce", OAuth.GetNonce());
            dic.Add("oauth_timestamp", OAuth.GetTimeStamp());
            dic.Add("oauth_signature_method", "HMAC-SHA1");
            dic.Add("oauth_version", "1.0");

            var hashKey = string.Format(
                "{0}&{1}",
                UrlEncode(this.App.Secret),
                this.User.Secret == null ? null : UrlEncode(this.User.Secret));
            var hashData = string.Format(
                "{0}&{1}&{2}",
                method.ToUpper(),
                UrlEncode(string.Format("{0}{1}{2}{3}", uri.Scheme, Uri.SchemeDelimiter, uri.Host, uri.AbsolutePath)),
                UrlEncode(OAuth.ToString(dic)));

            using (var hash = new HMACSHA1(Encoding.UTF8.GetBytes(hashKey)))
                dic.Add("oauth_signature", UrlEncode(Convert.ToBase64String(hash.ComputeHash(Encoding.UTF8.GetBytes(hashData)))));

            var sbData = new StringBuilder();

            sbData.Append("OAuth ");
            foreach (var st in dic)
            {
                if (Array.IndexOf <string>(oauth_array, st.Key) >= 0)
                {
                    sbData.AppendFormat("{0}=\"{1}\",", st.Key, Convert.ToString(st.Value));
                }
            }
            sbData.Remove(sbData.Length - 1, 1);

            var str = sbData.ToString();

            var req = (HttpWebRequest)WebRequest.Create(uri);

            req.Method = method;
            req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            req.UserAgent = "Decchi";
            req.Headers.Add("Authorization", sbData.ToString());

            if (method == "POST")
            {
                req.ContentType = "application/x-www-form-urlencoded";
            }

            return(req);
        }