/// <summary> /// Initializes a new instance of the <see cref="WebRequestBuilder"/> class. /// </summary> /// <param name="requestUri">The request URI.</param> /// <param name="verb">The verb.</param> /// <param name="tokens">The tokens.</param> /// <param name="userAgent">The user agent.</param> public WebRequestBuilder(Uri requestUri, HTTPVerb verb, OAuthTokens tokens, string userAgent = "") : this(requestUri, verb, userAgent, null) { this.Tokens = tokens; if (tokens != null) { if (string.IsNullOrEmpty(this.Tokens.ConsumerKey) || string.IsNullOrEmpty(this.Tokens.ConsumerSecret)) { throw new ArgumentException("Consumer key and secret are required for OAuth requests."); } if (string.IsNullOrEmpty(this.Tokens.AccessToken) ^ string.IsNullOrEmpty(this.Tokens.AccessTokenSecret)) { throw new ArgumentException("The access token is invalid. You must specify the key AND secret values."); } this.UseOAuth = true; } }
/// <summary> /// Adds the OAuth Echo header to the supplied web request. /// </summary> /// <param name="request">The request.</param> /// <param name="tokens">The tokens.</param> public static void AddOAuthEchoHeader(WebRequest request, OAuthTokens tokens) { WebRequestBuilder builder = new WebRequestBuilder( new Uri("https://api.twitter.com/1.1/account/verify_credentials.json"), HTTPVerb.POST, tokens); builder.PrepareRequest(); request.Headers.Add("X-Verify-Credentials-Authorization", builder.GenerateAuthorizationHeader()); request.Headers.Add("X-Auth-Service-Provider", "https://api.twitter.com/1.1/account/verify_credentials.json"); }