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());
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }