public async Task SelectLinksAsyncUnitTests(IWebRequestHandler requestHandler, string query, int count) { var handler = new GoogleHandler(requestHandler); var links = await handler.SelectLinksAsync(query, count); Assert.Equal(count, links.Count()); }
public Task Execute(IJobExecutionContext context) { if (IsRunning) { return(default(Task)); } IsRunning = true; try { var userContext = new UserContext(); var unitOfWork = new UnitOfWork(userContext); var engineDataAccess = new EngineDataAccess(unitOfWork, userContext); var userData = engineDataAccess.GetUserDataForPull(); var response = new List <EngineLogResponse>(); foreach (var item in userData.Influencers) { foreach (var userInfluencer in userData.UserInfluencerAuths.Where(ui => ui.InfluencerId == item.InfluencerId).ToList()) { var itemResponse = new EngineLogResponse { UserId = userInfluencer.UserId, InfluencerId = (short)item.InfluencerId }; try { switch (item.InfluencerId) { case ConnectorType.Undefined: break; case ConnectorType.Google: var googleHandler = new GoogleHandler(); itemResponse.Response = googleHandler.Handle(item, userInfluencer); itemResponse.PullStatus = "Success"; break; case ConnectorType.Twitter: var twitterHandler = new TwitterHandler(); itemResponse.Response = twitterHandler.Handle(item, userInfluencer); itemResponse.PullStatus = "Success"; break; case ConnectorType.LinkedIn: var linkedinHandler = new LinkedInHandler(); itemResponse.Response = linkedinHandler.Handle(item, userInfluencer); itemResponse.PullStatus = "Success"; break; case ConnectorType.Upwork: break; case ConnectorType.Naukri: break; case ConnectorType.Payoneer: break; case ConnectorType.Paisabazaar: break; case ConnectorType.MCA: break; case ConnectorType.Facebook: var facebookHandler = new FacebookHandler(); itemResponse.Response = facebookHandler.Handle(item, userInfluencer); itemResponse.PullStatus = "Success"; break; default: break; } } catch (Exception ex) { itemResponse.Remarks = ex.ToString(); itemResponse.PullStatus = "Failed"; } finally { itemResponse.TransactionDate = DateTime.Now; } response.Add(itemResponse); } } engineDataAccess.UpdateEngineResponse(response); } catch (Exception ex) { throw; } finally { IsRunning = false; } return(default(Task)); }
public void RefreshScore(int userId) { //Get tokens var userTokens = this.GetUserTokens(userId); var googleHandler = new GoogleHandler(); var tokenValues = userTokens.Select(ut => ut.Token).Distinct().ToList(); var tokenResponses = new Dictionary <string, string>(); var tokenResponsesLinks = new Dictionary <string, GoogleData>(); foreach (var token in tokenValues) { var response = googleHandler.RawHandle(token); tokenResponses.Add(token, response); var jObject = JObject.Parse(response); var itemsList = jObject["items"] as JArray; foreach (var item in itemsList) { var link = item["link"].ToString(); var description = item["pagemap"]["metatags"][0]["og:description"]; if (description == null) { continue; } if (tokenResponsesLinks.ContainsKey(link)) { tokenResponsesLinks[link].Count += 1; tokenResponsesLinks[link].Description = description.ToString(); } else { tokenResponsesLinks.Add(link, new GoogleData { Link = link, Count = 1, Description = description.ToString() }); } } } foreach (var key in tokenResponsesLinks.Keys) { var handlerData = googleHandler.ProcessDetailed(tokenResponsesLinks[key].Description); var gObject = default(JObject); var tokens = new List <string>(); var score = default(double); var magnitude = default(double); tokenResponsesLinks[key].AnalyzeEntities = handlerData.AnalyzeEntities; gObject = JObject.Parse(tokenResponsesLinks[key].AnalyzeEntities); tokens = new List <string>(); score = default(double); magnitude = default(double); foreach (var item in (gObject["Entities"] as JArray)) { tokens.Add(item["Name"].ToString()); score = score + (double.Parse(item["Sentiment"]["Score"].ToString())); magnitude = magnitude + (double.Parse(item["Sentiment"]["Magnitude"].ToString())); } tokenResponsesLinks[key].AnalyzeEntitiesTokens = string.Join(",", tokens); tokenResponsesLinks[key].AnalyzeEntitiesScore = Math.Round(score / tokens.Count, 2); tokenResponsesLinks[key].AnalyzeEntitiesMagnitude = Math.Round(magnitude / tokens.Count, 2); tokenResponsesLinks[key].AnalyzeEntitySentiment = handlerData.AnalyzeEntitySentiment; gObject = JObject.Parse(tokenResponsesLinks[key].AnalyzeEntitySentiment); tokens = new List <string>(); score = default(double); magnitude = default(double); foreach (var item in (gObject["Entities"] as JArray)) { tokens.Add(item["Name"].ToString()); score = score + (double.Parse(item["Sentiment"]["Score"].ToString())); magnitude = magnitude + (double.Parse(item["Sentiment"]["Magnitude"].ToString())); } tokenResponsesLinks[key].AnalyzeEntitySentimentTokens = string.Join(",", tokens); tokenResponsesLinks[key].AnalyzeEntitySentimentScore = Math.Round(score / tokens.Count, 2); tokenResponsesLinks[key].AnalyzeEntitySentimentMagnitude = Math.Round(magnitude / tokens.Count, 2); tokenResponsesLinks[key].AnalyzeSyntax = handlerData.AnalyzeSyntax; gObject = JObject.Parse(tokenResponsesLinks[key].AnalyzeSyntax); tokens = new List <string>(); score = default(double); magnitude = default(double); foreach (var item in (gObject["Sentences"] as JArray)) { tokens.Add(item["Text"]["Content"].ToString()); } tokenResponsesLinks[key].AnalyzeSyntaxTokens = string.Join(",", tokens); tokenResponsesLinks[key].ClassifyText = handlerData.ClassifyText; gObject = JObject.Parse(tokenResponsesLinks[key].ClassifyText); tokens = new List <string>(); score = default(double); magnitude = default(double); foreach (var item in (gObject["Categories"] as JArray)) { tokens.Add(item["Name"].ToString()); } tokenResponsesLinks[key].ClassifyTextTokens = string.Join(",", tokens); } var googleData = new List <GoogleData>(); foreach (var item in tokenResponsesLinks) { googleData.Add(item.Value); } this.scoreDataAccess.UpdateUserTokenResponseDetail(new UserTokenResponse { UserId = userId, Token = "", ProcessDate = DateTime.Now, CreatedBy = 1, CreatedDate = DateTime.Now, ModifiedBy = 1, ModifiedDate = DateTime.Now } , googleData); System.Console.WriteLine(tokenResponsesLinks); }