/// <summary> /// Initializes a new instance of the <see cref="TwitterOAuthRequestBuilder"/> class. /// Authorization request builder. /// </summary> /// <param name="requestUri">Request Uri.</param> /// <param name="tokens">Tokens to form request.</param> /// <param name="signatureManager">Signature manager to sign the OAuth request</param> /// <param name="method">Method to use with request.</param> public TwitterOAuthRequestBuilder(Uri requestUri, TwitterOAuthTokens tokens, ISignatureManager signatureManager, string method = "GET") { _signatureManager = signatureManager; Verb = method; RequestUriWithoutQuery = new Uri(requestUri.AbsoluteWithoutQuery()); if (!string.IsNullOrEmpty(requestUri.Query)) { QueryParams = requestUri.GetQueryParams() .Select(p => new OAuthParameter(p.Key, Uri.UnescapeDataString(p.Value))) .ToList(); } else { QueryParams = new List <OAuthParameter>(); } EncodedRequestUri = GetEncodedUri(requestUri, QueryParams); Version = new OAuthParameter("oauth_version", "1.0"); Nonce = new OAuthParameter("oauth_nonce", GenerateNonce()); Timestamp = new OAuthParameter("oauth_timestamp", GenerateTimeStamp()); SignatureMethod = new OAuthParameter("oauth_signature_method", "HMAC-SHA1"); ConsumerKey = new OAuthParameter("oauth_consumer_key", tokens.ConsumerKey); ConsumerSecret = new OAuthParameter("oauth_consumer_secret", tokens.ConsumerSecret); Token = new OAuthParameter("oauth_token", tokens.AccessToken); TokenSecret = new OAuthParameter("oauth_token_secret", tokens.AccessTokenSecret); }
private static Uri GetEncodedUri(Uri requestUri, IEnumerable <OAuthParameter> parameters) { StringBuilder requestParametersBuilder = new StringBuilder(requestUri.AbsoluteWithoutQuery()); if (parameters.Count() > 0) { requestParametersBuilder.Append("?"); foreach (var queryParam in parameters) { requestParametersBuilder.AppendFormat("{0}&", queryParam.ToString()); } requestParametersBuilder.Remove(requestParametersBuilder.Length - 1, 1); } return(new Uri(requestParametersBuilder.ToString())); }
/// <summary> /// Get encoded Uri. /// </summary> /// <param name="requestUri">Request uri.</param> /// <param name="parameters">List of parameters.</param> /// <returns>Encoded Uri.</returns> private static Uri GetEncodedUri(Uri requestUri, IEnumerable<OAuthParameter> parameters) { StringBuilder requestParametersBuilder = new StringBuilder(requestUri.AbsoluteWithoutQuery()); var oAuthParameters = parameters as OAuthParameter[] ?? parameters.ToArray(); if (oAuthParameters.Any()) { requestParametersBuilder.Append("?"); foreach (var queryParam in oAuthParameters) { requestParametersBuilder.AppendFormat("{0}&", queryParam.ToString()); } requestParametersBuilder.Remove(requestParametersBuilder.Length - 1, 1); } return new Uri(requestParametersBuilder.ToString()); }
public OAuthRequestBuilder(Uri requestUri, OAuthTokens tokens) { RequestUriWithoutQuery = new Uri(requestUri.AbsoluteWithoutQuery()); QueryParams = requestUri.GetQueryParams() .Select(p => new OAuthParameter(p.Key, p.Value)) .ToList(); EncodedRequestUri = GetEncodedUri(requestUri, QueryParams); Version = new OAuthParameter("oauth_version", "1.0"); Nonce = new OAuthParameter("oauth_nonce", GenerateNonce()); Timestamp = new OAuthParameter("oauth_timestamp", GenerateTimeStamp()); SignatureMethod = new OAuthParameter("oauth_signature_method", "HMAC-SHA1"); ConsumerKey = new OAuthParameter("oauth_consumer_key", tokens["ConsumerKey"]); ConsumerSecret = new OAuthParameter("oauth_consumer_secret", tokens["ConsumerSecret"]); Token = new OAuthParameter("oauth_token", tokens["AccessToken"]); TokenSecret = new OAuthParameter("oauth_token_secret", tokens["AccessTokenSecret"]); }