public override async Task <CrawlJobData> GetCrawlJobData( ProviderUpdateContext context, IDictionary <string, object> configuration, Guid organizationId, Guid userId, Guid providerDefinitionId) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var twitterCrawlJobData = new TwitterCrawlJobData(); var authUrl = "https://api.twitter.com/oauth2/token"; var authHeaderFormat = "Basic {0}"; var authHeader = string.Format(authHeaderFormat, Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(consumerKey) + ":" + Uri.EscapeDataString(consumerSecret)))); var postBody = "grant_type=client_credentials"; HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create(authUrl); authRequest.Headers.Add("Authorization", authHeader); authRequest.Method = "POST"; authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; using (Stream stream = authRequest.GetRequestStream()) { byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody); stream.Write(content, 0, content.Length); } WebResponse authResponse = authRequest.GetResponse(); TwitAuthenticateResponse twitAuthResponse; using (authResponse) { using (var reader = new StreamReader(authResponse.GetResponseStream())) { var objectText = reader.ReadToEnd(); twitAuthResponse = JsonConvert.DeserializeObject <TwitAuthenticateResponse>(objectText); twitterCrawlJobData.ApiKey = twitAuthResponse.access_token; } } if (configuration.ContainsKey(TwitterConstants.KeyName.ApiKey)) { twitterCrawlJobData.ApiKey = twitAuthResponse.access_token; } if (configuration.ContainsKey(TwitterConstants.KeyName.Screen_name)) { twitterCrawlJobData.Screen_name = configuration[TwitterConstants.KeyName.Screen_name].ToString(); } return(await Task.FromResult(twitterCrawlJobData)); }
public TwitterClient(ILogger log, TwitterCrawlJobData twitterCrawlJobData, IRestClient client) // TODO: pass on any extra dependencies { if (twitterCrawlJobData == null) { throw new ArgumentNullException(nameof(twitterCrawlJobData)); } if (client == null) { throw new ArgumentNullException(nameof(client)); } this.log = log ?? throw new ArgumentNullException(nameof(log)); this.client = client ?? throw new ArgumentNullException(nameof(client)); // TODO use info from twitterCrawlJobData to instantiate the connection client.BaseUrl = new Uri(BaseUri); client.AddDefaultParameter("api_key", twitterCrawlJobData.ApiKey, ParameterType.QueryString); }