private bool MakeRequest(string targetPoint, HTTPVerb targetAction, out string data)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetPoint);

            request.Method = targetAction.ToString();

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                try
                {
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                        {
                            using (StreamReader reader = new StreamReader(responseStream))
                            {
                                data = reader.ReadToEnd();
                            }
                        }
                        else
                        {
                            data = "";
                            return(false);
                        }
                    }
                }
                catch
                {
                    data = "";
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
	protected override IEnumerator send( string path, HTTPVerb httpVerb, Dictionary<string,object> parameters, Action<string, object> onComplete )
	{
		if( parameters == null )
			parameters = new Dictionary<string, object>();

		// add the access token if we dont have one in the dictionary
		if( !parameters.ContainsKey( "access_token" ) )
			parameters.Add( "access_token", accessToken );
		
		if( httpVerb == HTTPVerb.PUT || httpVerb == HTTPVerb.DELETE )
			parameters.Add( "method", httpVerb.ToString() );

		return base.send( path, httpVerb, parameters, onComplete );
	}
 protected override IEnumerator send(string path, HTTPVerb httpVerb, Dictionary <string, object> parameters, Action <string, object> onComplete)
 {
     if (parameters == null)
     {
         parameters = new Dictionary <string, object>();
     }
     if (!parameters.ContainsKey("access_token"))
     {
         parameters.Add("access_token", this.accessToken);
     }
     if (httpVerb == HTTPVerb.PUT || httpVerb == HTTPVerb.DELETE)
     {
         parameters.Add("method", httpVerb.ToString());
     }
     return(base.send(path, httpVerb, parameters, onComplete));
 }
Esempio n. 4
0
        /// <summary>
        /// Generates and adds a signature to parameters.
        /// </summary>
        /// <param name="url">The base URL.</param>
        /// <param name="parameters">The parameters.</param>
        /// <param name="verb">The HTTP verb to perform.</param>
        /// <param name="consumerSecret">The consumer secret.</param>
        /// <param name="tokenSecret">The token secret.</param>
        private static void AddSignatureToParameters(
            Uri url,
            Dictionary<string, string> parameters,
            HTTPVerb verb,
            string consumerSecret,
            string tokenSecret)
        {
            string normalizedUrl = NormalizeUrl(url);

            // Get the oauth parameters from the parameters
            Dictionary<string, string> baseStringParameters =
                (from p in parameters
                 where !(p.Key.EndsWith("_secret", StringComparison.OrdinalIgnoreCase) &&
                    p.Key.StartsWith("oauth_", StringComparison.OrdinalIgnoreCase) &&
                    !p.Key.EndsWith("_verifier", StringComparison.OrdinalIgnoreCase))
                 select p).ToDictionary(p => p.Key, p => p.Value);

            string signatureBase = string.Format(
                CultureInfo.InvariantCulture,
                "{0}&{1}&{2}",
                verb.ToString().ToUpper(CultureInfo.InvariantCulture),
                EncodeForUrl(normalizedUrl),
                UrlEncode(baseStringParameters));

            HMACSHA1 hmacsha1 = new HMACSHA1();

            string key = string.Format(
                    CultureInfo.InvariantCulture,
                    "{0}&{1}",
                    EncodeForUrl(consumerSecret),
                    EncodeForUrl(tokenSecret));

            hmacsha1.Key = Encoding.ASCII.GetBytes(key);

            string result = Convert.ToBase64String(
                hmacsha1.ComputeHash(
                    Encoding.ASCII.GetBytes(signatureBase)));

            // Add the signature to the oauth parameters
            parameters.Add("oauth_signature", result);

            #if DEBUG
            System.Diagnostics.Debug.WriteLine("----------- OAUTH SIGNATURE GENERATION -----------");
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "url.PathAndQuery = \"{0}\"", url.PathAndQuery));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "httpMethod = \"{0}\"", verb.ToString()));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "consumerSecret = \"{0}\"", consumerSecret));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "tokenSecret = \"{0}\"", tokenSecret));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "normalizedUrl = \"{0}\"", normalizedUrl));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "signatureBase = \"{0}\"", signatureBase));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "key = \"{0}\"", key));
            System.Diagnostics.Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "signature = \"{0}\"", result));
            System.Diagnostics.Debug.WriteLine("--------- END OAUTH SIGNATURE GENERATION ----------");
            #endif
        }
Esempio n. 5
0
        /// <summary>
        /// Creates and executes an OAuth signed HTTP request.
        /// </summary>
        /// <param name="baseUrl">The base URL.</param>
        /// <param name="parameters">The parameters.</param>
        /// <param name="verb">The HTTP verb to perform.</param>
        /// <param name="consumerKey">The consumer key.</param>
        /// <param name="consumerSecret">The consumer secret.</param>
        /// <param name="token">The access or request token.</param>
        /// <param name="tokenSecret">The token secret.</param>
        /// <returns>
        /// A new instance of the <see cref="System.Net.HttpWebRequest"/> class.
        /// </returns>
        internal static HttpWebResponse ExecuteRequest(
            string baseUrl,
            Dictionary<string, string> parameters,
            HTTPVerb verb,
            string consumerKey,
            string consumerSecret,
            string token,
            string tokenSecret,
            WebProxy proxy)
        {
            Dictionary<string, string> combinedParameters = PrepareOAuthParameters(
                baseUrl,
                parameters,
                verb,
                consumerKey,
                consumerSecret,
                token,
                tokenSecret);

            HttpWebResponse response;

            if (verb == HTTPVerb.POST)
            {
                baseUrl = AppendParametersForPOST(baseUrl, combinedParameters);
            }
            else
            {
                string querystring = GenerateGetQueryString(combinedParameters);
                if (!string.IsNullOrEmpty(querystring))
                {
                    baseUrl = string.Concat(baseUrl, "?", querystring);
                }
            }

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseUrl);
            request.Method = verb.ToString();
            request.UserAgent = string.Format(CultureInfo.InvariantCulture, "Twitterizer");
            request.Headers.Add("Authorization", GenerateAuthorizationHeader(combinedParameters));

            if (proxy != null)
                request.Proxy = proxy;

            if (verb == HTTPVerb.POST)
            {
                request.ContentType = "application/x-www-form-urlencoded";
            }

            #if DEBUG
            Console.WriteLine("----- Headers -----");
            foreach (string key in request.Headers.AllKeys)
            {
                Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0} = {1}\n", key, request.Headers[key]));
            }

            Console.WriteLine("----- End Of Headers -----");
            #endif
            response = (HttpWebResponse)request.GetResponse();

            return response;
        }