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); }
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)); }
/// <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 }
/// <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; }