// ReSharper disable once InconsistentNaming // Autofac requires variable names to match, not just the method signature :s public TwitterQueryRemoteAuth(string queryURL, HttpMethod httpMethod) : base(queryURL, httpMethod) { // Get the credentials to use to sign this request ITwitterCredentials twitterCredentials = TwitterCredentials; if (twitterCredentials == null) { ICredentialsAccessor credentialsAccessor = TweetinviContainer.Resolve <ICredentialsAccessor>(); twitterCredentials = credentialsAccessor.CurrentThreadCredentials; } // Send a request to the TweetinviRequestSigner server to sign this request VmRequestToSign signReq = new VmRequestToSign() { Url = queryURL, Method = httpMethod, ConsumerKey = twitterCredentials.ConsumerKey, ClientToken = twitterCredentials.AccessToken, ClientSecret = twitterCredentials.AccessTokenSecret }; // TODO: Handle Exceptions through Tweetinvi? VmAuthorizationHeader vmAuthHeader = Requester.MakePostJson <VmAuthorizationHeader>("Request/Sign", signReq); AuthorizationHeader = vmAuthHeader.AuthorizationHeader; }
public VmAuthorizationHeader Sign([FromBody] VmRequestToSign req) { // Check that the Consumer Key in the request matches the one that we have if (req.ConsumerKey != CONSUMER_KEY) { throw new ArgumentException( "Request must be for a Twitter Application that we have the credentials for", nameof(req)); } Uri uri = new Uri(req.Url); TwitterCredentials twitterCredentials = new TwitterCredentials(req.ConsumerKey, CONSUMER_SECRET, req.ClientToken, req.ClientSecret); IOAuthWebRequestGenerator oAuthWebReqGenerator = TweetinviContainer.Resolve <IOAuthWebRequestGenerator>(); IEnumerable <IOAuthQueryParameter> credentialsParams = oAuthWebReqGenerator.GenerateParameters(twitterCredentials); string authHeader = oAuthWebReqGenerator.GenerateAuthorizationHeader(uri, req.Method, credentialsParams); return(new VmAuthorizationHeader() { AuthorizationHeader = authHeader }); }