Exemplo n.º 1
0
        private async Task <string> GetRawDataQuotesFromServer(Symbol symbol, int marketId, int em, DateTime dateFrom, DateTime dateTo, FinamDataPeriod period)
        {
            string url           = PrepareGetQuotesRequest(symbol.Code, marketId, em, period, dateFrom, dateTo);
            string rawDataQuotes = await RequestsHelper.SendGetRequest(url);

            logger.Debug("Response from Finam is:\n" + rawDataQuotes);
            await Task.Delay(5000);

            return(rawDataQuotes);
        }
        protected override GetFriendsResponseModel ExecuteEngine(GetRecommendedFriendsModel model)
        {
            var stringResponse = RequestsHelper.Get(Urls.GetRecommendedFriends.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent);

            var friendsCount = GetCountFriends(stringResponse);
            var friendsList  = GetFriendsData(stringResponse);

            friendsList.CountIncommingFriends = friendsCount;

            return(friendsList);
        }
Exemplo n.º 3
0
        public async Task <ObservableCollection <Character> > GetCharactersAsync()
        {
            try {
                var response = await RequestsHelper <ObservableCollection <Character> > .
                               Requests("api/characters", RequestsHelper <ObservableCollection <Character> > .MethodsRequest.GET);

                return(response);
            } catch (Exception ex) {
                Debug.WriteLine($"Exception => GetCharactersAsync() {ex.Message}");
            }

            return(null);
        }
Exemplo n.º 4
0
        public static async Task <HashSet <Dividend> > GetDividendsByCode(string code)
        {
            var divs = new HashSet <Dividend>();

            if (string.IsNullOrEmpty(code))
            {
                throw new ApplicationException("Symbol name can't be empty");
            }

            var divsFileName = $"Div_{code}";

            logger.Info($"Get Dividends for {code}");

            string response;

            if (FilesHelper.IsFileExists(divsFileName))
            {
                response = FilesHelper.ReadFromFile(divsFileName);
            }
            else
            {
                response = await RequestsHelper.SendGetRequest($"{baseUrl}/{code.ToLower()}");

                FilesHelper.SaveToFile(divsFileName, response);
            }

            var doc = new HtmlDocument();

            doc.LoadHtml(response);
            HtmlNode           htmlDivsTable = doc.GetElementbyId("leftside-col").SelectNodes("table[tr/th//text()[contains(., 'Дата закрытия реестра')]]")[0];
            HtmlNodeCollection htmlDivs      = htmlDivsTable.SelectNodes("tr");

            foreach (HtmlNode htmlDiv in htmlDivs)
            {
                var cells = htmlDiv.SelectNodes("td");
                if (cells != null && cells.Count > 0)
                {
                    if (cells[0].InnerText.Contains("прогноз"))
                    {
                        continue;
                    }
                    var date     = DateTime.ParseExact(cells[0].InnerText.Trim(), formatDate, CultureInfo.InvariantCulture);
                    var amount   = decimal.Parse(cells[2].InnerText.Trim(), CultureInfo.InvariantCulture);
                    var dividend = new Dividend(date, amount);
                    divs.Add(dividend);
                }
            }

            return(divs);
        }
Exemplo n.º 5
0
        private string BuildByTagQuery(int page)
        {
            var query = new Dictionary <string, string>
            {
                { "method", AdditionalData.Info.Flickr.MethodSearch.Value },
                { "api_key", _secrets.FlickrKey },
                { "sort", "date-posted-asc" },
                { "text", AdditionalData.Info.Flickr.Tag.Value },
                { "page", (page + 1).ToString() },
                { "format", "json" },
                { "nojsoncallback", "1" }
            };

            return(RequestsHelper.BuildQuery(_flickrUrl, query));
        }
Exemplo n.º 6
0
        private string BuildByPhotosetQuery(int page)
        {
            var query = new Dictionary <string, string>
            {
                { "method", AdditionalData.Info.Flickr.MethodPhotosets.Value },
                { "api_key", _secrets.FlickrKey },
                { "photoset_id", AdditionalData.Info.Flickr.Photoset.Value },
                { "user_id", AdditionalData.Info.Flickr.User.Value },
                { "page", (page + 1).ToString() },
                { "format", "json" },
                { "nojsoncallback", "1" }
            };

            return(RequestsHelper.BuildQuery(_flickrUrl, query));
        }
Exemplo n.º 7
0
        protected override bool ExecuteEngine(CheckFriendGenderModel model)
        {
            var contactStringResponse = RequestsHelper.Get("https://www.facebook.com/profile.php?id="
                                                           + model.FriendFacebookId
                                                           + "&sk=about"
                                                           + "&lst=" + model.AccountFacebookId
                                                           + "%3A" + model.FriendFacebookId
                                                           + "%3A" + GenerateValue()
                                                           + "&section=contact-info&pnref=about"
                                                           , model.Cookie, model.Proxy,
                                                           model.UserAgent);

            var gender = GetGender(contactStringResponse);

            return(gender == model.Gender);
        }
Exemplo n.º 8
0
        protected override GetFriendsResponseModel ExecuteEngine(GetFriendsModel model)
        {
            if (model.UrlParameters == null)
            {
                return(null);
            }

            var parametersDictionary = model.UrlParameters.ToDictionary(pair => (GetFriendsEnum)pair.Key, pair => pair.Value);

            parametersDictionary[GetFriendsEnum.Id] = model.AccountId.ToString("G");

            var parameters = CreateParametersString(parametersDictionary);

            var stringResponse = RequestsHelper.Get(Urls.GetFriends.GetDiscription() + parameters, model.Cookie, model.Proxy, model.UserAgent).Remove(0, 9);

            return(GetFriendsData(stringResponse));
        }
Exemplo n.º 9
0
        protected override bool ExecuteEngine(BotPageIsWorkModel model)
        {
            try
            {
                var resultUrl = string.Format("https://www.facebook.com/profile.php?id={0}", model.FriendFacebookId);

                var page     = RequestsHelper.Get(resultUrl, model.Cookie, model.Proxy, model.UserAgent);
                var utf8Page = ConvertToUTF8(page);

                var result = CheckPage(utf8Page);

                return(result);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 10
0
        protected override GetFriendsResponseModel ExecuteEngine(GetFriendsByCriteriesModel model)
        {
            if (model.UrlParameters == null)
            {
                return null;
            }

            var fbDtsg = ParseResponsePageHelper.GetInputValueById(RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

            var parametersDictionary = model.UrlParameters.ToDictionary(pair => (GetFriendsByCriteriesEnum)pair.Key, pair => pair.Value);

            parametersDictionary[GetFriendsByCriteriesEnum.User] = model.AccountId.ToString("G");
            parametersDictionary[GetFriendsByCriteriesEnum.FbDtsg] = fbDtsg;
            parametersDictionary[GetFriendsByCriteriesEnum.HomeTownIdsZero] = "115085015172389";

            var parameters = CreateParametersString(parametersDictionary);

            var stringResponse = RequestsHelper.Post(Urls.GetFriendsByCriteries.GetDiscription(), parameters, model.Cookie, model.Proxy, model.UserAgent).Remove(0, 9);

            return GetFriendsData(stringResponse);
        }
Exemplo n.º 11
0
        protected override VoidModel ExecuteEngine(ChangeMessageStatusModel model)
        {
            if (model.UrlParameters == null)
            {
                return(null);
            }

            var fbDtsg = ParseResponsePageHelper.GetInputValueById(RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

            var parametersDictionary = model.UrlParameters.ToDictionary(pair => (ChangeStatusForMesagesEnum)pair.Key, pair => pair.Value);

            parametersDictionary[ChangeStatusForMesagesEnum.Ids]     = model.FriendFacebookId.ToString("G") + "]=true";
            parametersDictionary[ChangeStatusForMesagesEnum.User]    = model.AccountId.ToString(CultureInfo.InvariantCulture);
            parametersDictionary[ChangeStatusForMesagesEnum.FbDtsg]  = fbDtsg;
            parametersDictionary[ChangeStatusForMesagesEnum.Ttstamp] = "2658169757012152707310256495865817278110491018710365111116";

            var parameters = CreateParametersString(parametersDictionary);

            RequestsHelper.Post(Urls.ChangeReadStatus.GetDiscription(), parameters, model.Cookie, model.Proxy, model.UserAgent).Remove(0, 9);

            return(new VoidModel());
        }
Exemplo n.º 12
0
        protected override bool ExecuteEngine(SendMessageModel model)
        {
            try
            {
                if (model.UrlParameters == null)
                {
                    return(false);
                }

                var messageId = GenerateMessageId();

                var fbDtsg =
                    ParseResponsePageHelper.GetInputValueById(
                        RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

                var parametersDictionary = model.UrlParameters.ToDictionary(pair => (SendMessageEnum)pair.Key,
                                                                            pair => pair.Value);

                parametersDictionary[SendMessageEnum.Body]               = model.Message;
                parametersDictionary[SendMessageEnum.MessageId]          = messageId;
                parametersDictionary[SendMessageEnum.OfflineThreadingId] = messageId;
                parametersDictionary[SendMessageEnum.OtherUserFbid]      = model.FriendId.ToString("G");
                parametersDictionary[SendMessageEnum.SpecificToListOne]  = model.FriendId.ToString("G");
                parametersDictionary[SendMessageEnum.SpecificToListTwo]  = model.AccountId.ToString();
                parametersDictionary[SendMessageEnum.UserId]             = model.AccountId.ToString();
                parametersDictionary[SendMessageEnum.Timestamp]          = DateTime.Now.Ticks.ToString();
                parametersDictionary[SendMessageEnum.FbDtsg]             = fbDtsg;

                var parameters = CreateParametersString(parametersDictionary);

                RequestsHelper.Post(Urls.SendMessage.GetDiscription(), parameters, model.Cookie, model.Proxy, model.UserAgent);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 13
0
        public static int GetFriendsCount(string pageRequest, GetNewWinksModel model, string userAgent)
        {
            var newPokes = new Regex("<div id=\"poke_live_new\">(.*?)class=\"_4-u2 _xct _4-u8\">");

            if (!newPokes.IsMatch(pageRequest))
            {
                newPokes = new Regex("<div id=\"poke_live_new\">(.*?)bottomContent");
                if (!newPokes.IsMatch(pageRequest))
                {
                    return(0);
                }
            }
            var blockPokes = newPokes.Match(pageRequest).ToString();

            var regex = new Regex("<a class=\"_42ft _4jy0 _4jy3 _4jy1 selected _51sy\" role=\"button\" href=\"#\" ajaxify=\"[^\"]*");

            if (!regex.IsMatch(pageRequest))
            {
                return(0);
            }

            var collection = regex.Matches(blockPokes);

            foreach (var links in collection)
            {
                var link = links != null?links.ToString().Remove(0, 88) : "";

                const string substr = "amp;";
                link = link.Replace(substr, "");

                var fullLink = Urls.GetNewWinks.GetDiscription() + link;
                RequestsHelper.Get(fullLink, model.Cookie, model.Proxy, userAgent);

                Thread.Sleep(TimeSpan.FromSeconds(2));
            }

            return(collection.Count);
        }
Exemplo n.º 14
0
        protected override List <GetMessagesResponseModel> ExecuteEngine(GetMessagesModel model)
        {
            var messagesList = new List <GetMessagesResponseModel>();

            if (model.UrlParameters == null)
            {
                return(null);
            }

            var fbDtsg = ParseResponsePageHelper.GetInputValueById(RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

            var parametersDictionary = model.UrlParameters.ToDictionary(pair => (GetMessagesEnum)pair.Key, pair => pair.Value);

            parametersDictionary[GetMessagesEnum.User]   = model.AccountId.ToString();
            parametersDictionary[GetMessagesEnum.FbDtsg] = fbDtsg;

            var parameters = CreateParametersString(parametersDictionary);

            var stringResponse = RequestsHelper.Post(Urls.NewMessages.GetDiscription(), parameters, model.Cookie, model.Proxy, model.UserAgent).Remove(0, 9);

            var data    = (JObject)JsonConvert.DeserializeObject(stringResponse);
            var threads = data["payload"]["threads"];

            foreach (var thread in threads)
            {
                messagesList.Add(new GetMessagesResponseModel()
                {
                    FriendId            = thread["thread_fbid"].Value <long>(),
                    CountAllMessages    = thread["message_count"].Value <int>(),
                    CountUnreadMessages = thread["unread_count"].Value <int>(),
                    LastMessage         = thread["snippet"].Value <string>(),
                    UnreadMessage       = thread["unread_count"].Value <int>() != 0
                });
            }

            return(messagesList);
        }
Exemplo n.º 15
0
        protected override FriendInfoSection ExecuteEngine(GetFriendInfoModel model)
        {
            var result = new FriendInfoSection();

            //if (model.Settings.LivesPlace != null || model.Settings.SchoolPlace != null || model.Settings.WorkPlace != null)
            {
                var stringResponse = RequestsHelper.Get("https://www.facebook.com/profile.php?id="
                                                        + model.FriendFacebookId
                                                        + "&sk=about"
                                                        + "&lst=" + model.AccountFacebookId
                                                        + "%3A" + model.FriendFacebookId
                                                        + "%3A" + GenerateValue()
                                                        + "&section=overview&pnref=about"
                                                        , model.Cookie, model.Proxy,
                                                        model.UserAgent);

                result = GetFriendsData(stringResponse);
            }

            if (model.Settings.Gender != null)
            {
                var contactStringResponse = RequestsHelper.Get("https://www.facebook.com/profile.php?id="
                                                               + model.FriendFacebookId
                                                               + "&sk=about"
                                                               + "&lst=" + model.AccountFacebookId
                                                               + "%3A" + model.FriendFacebookId
                                                               + "%3A" + GenerateValue()
                                                               + "&section=contact-info&pnref=about"
                                                               , model.Cookie, model.Proxy, model.UserAgent);

                var gender = GetGender(contactStringResponse);

                result.Gender = gender;
            }

            return(result);
        }
Exemplo n.º 16
0
        protected override bool ExecuteEngine(SendRequestFriendshipModel model)
        {
            try
            {
                if (model.AddFriendUrlParameters == null && model.AddFriendExtraUrlParameters == null)
                {
                    return(false);
                }

                var fbDtsg = ParseResponsePageHelper.GetInputValueById(RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

                var parametersAddFriendDictionary = model.AddFriendUrlParameters.ToDictionary(pair => (AddFriendEnum)pair.Key, pair => pair.Value);

                parametersAddFriendDictionary[AddFriendEnum.ToFriend] = model.FriendFacebookId.ToString("G");
                parametersAddFriendDictionary[AddFriendEnum.User]     = model.AccountFacebookId.ToString();
                parametersAddFriendDictionary[AddFriendEnum.FbDtsg]   = fbDtsg;

                var parametersAddFriendExtraDictionary = model.AddFriendExtraUrlParameters.ToDictionary(pair => (AddFriendExtraEnum)pair.Key, pair => pair.Value);

                parametersAddFriendExtraDictionary[AddFriendExtraEnum.User]   = model.AccountFacebookId.ToString();
                parametersAddFriendExtraDictionary[AddFriendExtraEnum.FbDtsg] = fbDtsg;

                var addFriendParameters      = CreateParametersString(parametersAddFriendDictionary);
                var addFriendExtraParameters = CreateParametersString(parametersAddFriendExtraDictionary);

                RequestsHelper.Post(Urls.AddFriend.GetDiscription(), addFriendParameters, model.Cookie, model.Proxy, model.UserAgent);

                RequestsHelper.Post(Urls.AddFriendExtra + "?friendid=" + model.FriendFacebookId + "&dpr=1", addFriendExtraParameters, model.Cookie, model.Proxy, model.UserAgent);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 17
0
        protected override List <FacebookMessageModel> ExecuteEngine(GetMessangerMessagesModel model)
        {
            var messagesList = new List <FacebookMessageModel>();

            if (model.UrlParameters == null)
            {
                return(null);
            }

            var fbDtsg = ParseResponsePageHelper.GetInputValueById(RequestsHelper.Get(Urls.HomePage.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent), "fb_dtsg");

            var parametersDictionary = model.UrlParameters.ToDictionary(pair => (GetUnreadMessagesEnum)pair.Key, pair => pair.Value);

            parametersDictionary[GetUnreadMessagesEnum.User]   = model.AccountId.ToString(CultureInfo.InvariantCulture);
            parametersDictionary[GetUnreadMessagesEnum.FbDtsg] = fbDtsg;

            var parameters = CreateParametersString(parametersDictionary);

            var stringResponse = RequestsHelper.Post(Urls.NewMessages.GetDiscription(), parameters, model.Cookie, model.Proxy, model.UserAgent).Remove(0, 9);

            var data = (JObject)JsonConvert.DeserializeObject(stringResponse);

            var threads  = data["payload"]["threads"];
            var threads2 = data["payload"]["participants"];

            int count = 0;

            foreach (var thread in threads)
            {
                if (count >= model.NumbersOfDialogues)
                {
                    break;
                }

                var countMessages       = thread["message_count"].Value <long>();
                var countUnreadMessages = thread["unread_count"].Value <long>();
                var text = thread["snippet"].Value <string>();

                if (countMessages == 1 && countUnreadMessages == 0 && text.Equals(string.Empty))
                {
                    var     facebookId    = thread["thread_fbid"].Value <long>();
                    JObject friendThread2 = null;

                    foreach (var thread2 in threads2)
                    {
                        if (thread2["fbid"].Value <long>().Equals(facebookId))
                        {
                            friendThread2 = (JObject)thread2;
                        }
                    }

                    messagesList.Add(new FacebookMessageModel
                    {
                        AccountId           = model.AccountId,
                        FriendFacebookId    = facebookId,
                        CountAllMessages    = thread["message_count"].Value <int>(),
                        CountUnreadMessages = thread["unread_count"].Value <int>(),
                        Gender      = friendThread2["gender"].Value <int>() == 1 ? GenderEnum.Female : GenderEnum.Male,
                        Href        = friendThread2["href"].Value <string>(),
                        Name        = friendThread2["name"].Value <string>(),
                        LastMessage = thread["snippet"].Value <string>(),
                        LastUnreadMessageDateTime =
                            GetDateTime(Convert.ToInt64(thread["last_message_timestamp"].Value <string>())),
                        UnreadMessage = thread["unread_count"].Value <int>() != 0
                    });
                    count++;
                }
            }

            return(messagesList);
        }
Exemplo n.º 18
0
        protected override int ExecuteEngine(GetFriendsCountModel model)
        {
            var countFriends = GetFriendsCount(RequestsHelper.Get(Urls.GetFriends.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent));

            return(Convert.ToInt32(countFriends));
        }
        protected override List <GetRandomFriendResponseModel> ExecuteEngine(GetRandomFriendFriendsModel model)
        {
            var driver = model.Driver;

            var result = new List <GetRandomFriendResponseModel>();

            const string path   = "/";
            const string domain = ".facebook.com";

            var cookies = ParseCookieString(model.Cookie);

            try
            {
                foreach (var keyValuePair in cookies)
                {
                    driver.Manage()
                    .Cookies.AddCookie(new Cookie(keyValuePair.Key, keyValuePair.Value, domain, path, null));
                }
                foreach (var friendModel in model.FriendsIdList)
                {
                    _random = new Random();

                    var navigateUrl =
                        string.Format(
                            "https://www.facebook.com/{1}/friends?lst={0}%3A{1}%3A1492106232&sk=friends&source_ref=pb_friends_tl",
                            model.AccountFacebookId,
                            friendModel.FriendFacebookId);

                    driver.Navigate().GoToUrl(navigateUrl);

                    Thread.Sleep(1000);

                    var countFriendsLabel = GetFriendsCount(RequestsHelper.Get(Urls.GetFriends.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent));
                    var countAllScrolls   = Convert.ToInt32(countFriendsLabel) / 20;
                    var countScrolls      = _random.Next(1, countAllScrolls);

                    ScrollPage(driver, countScrolls);

                    var friends = GetFriendLinks(driver).ToList();

                    var randomFriendNumber = _random.Next(0, friends.Count());

                    var id = friends[randomFriendNumber].GetAttribute("data-profileid");

                    result.Add(new GetRandomFriendResponseModel
                    {
                        FriendId = friendModel.FriendId,
                        FriendFriendFacebookId = Convert.ToInt64(id)
                    });
                }

                driver.Quit();
            }
            catch (Exception ex)
            {
                driver.Quit();
                return(null);
            }

            return(result);
        }
Exemplo n.º 20
0
        public async Task <List <FinamSecurity> > GetSecuritiesList()
        {
            const string securitiesFileName = "Finam-securities-list";

            logger.Info("Get Finam Securities List");

            string response;

            if (FilesHelper.IsFileExists(securitiesFileName))
            {
                response = FilesHelper.ReadFromFile(securitiesFileName);
            }
            else
            {
                response = await RequestsHelper.SendGetRequest("https://www.finam.ru/cache/icharts/icharts.js");

                FilesHelper.SaveToFile(securitiesFileName, response);
            }

            string[] arraySets = response.Split('=');
            string[] arrayIds  = arraySets[1].Split('[')[1].Split(']')[0].Split(',');

            string names = arraySets[2].Split('[')[1].Split(']')[0];

            List <string> arrayNames = new List <string>();

            string name = "";

            for (int i = 1; i < names.Length; i++)
            {
                if ((names[i] == '\'' && i + 1 == names.Length)
                    ||
                    (names[i] == '\'' && names[i + 1] == ',' && names[i + 2] == '\''))
                {
                    arrayNames.Add(name);
                    name = "";
                    i   += 2;
                }
                else
                {
                    name += names[i];
                }
            }

            string[] arrayCodes        = arraySets[3].Split('[')[1].Split(']')[0].Split(',');
            string[] arrayMarkets      = arraySets[4].Split('[')[1].Split(']')[0].Split(',');
            string[] arrayDecp         = arraySets[5].Split('{')[1].Split('}')[0].Split(',');
            string[] arrayEmitentChild = arraySets[7].Split('[')[1].Split(']')[0].Split(',');
            string[] arrayEmitentUrls  = arraySets[8].Split('{')[1].Split('}')[0].Split(',');

            var securitiesList = new List <FinamSecurity>();

            for (int i = 0; i < arrayIds.Length; i++)
            {
                securitiesList.Add(new FinamSecurity());
                securitiesList[i].Code         = arrayCodes[i];
                securitiesList[i].Decp         = arrayDecp[i].Split(':')[1];
                securitiesList[i].EmitentChild = arrayEmitentChild[i];
                securitiesList[i].Id           = arrayIds[i];
                securitiesList[i].Name         = arrayNames[i];
                securitiesList[i].Url          = arrayEmitentUrls[i].Split(':')[1];

                securitiesList[i].MarketId = arrayMarkets[i];

                securitiesList[i].Market = GetMarketNameFromId(int.Parse(securitiesList[i].MarketId));
            }

            return(securitiesList);
        }
Exemplo n.º 21
0
        protected override List <FriendsResponseModel> ExecuteEngine(GetCurrentFriendsBySeleniumModel model)
        {
            var driver      = model.Driver;
            var friendsList = new List <FriendsResponseModel>();

            const string path   = "/";
            const string domain = ".facebook.com";

            var cookies = ParseCookieString(model.Cookie);

            try
            {
                foreach (var keyValuePair in cookies)
                {
                    driver.Manage()
                    .Cookies.AddCookie(new Cookie(keyValuePair.Key, keyValuePair.Value, domain, path, null));
                }

                driver.Navigate()
                .GoToUrl(string.Format("https://facebook.com/{0}/friends?lst={0}%3A{0}%3A1492727311",
                                       model.AccountFacebookId));

                Thread.Sleep(1000);

                var friends           = GetFriendLinks(driver);
                var countFriendsLabel = GetFriendsCount(RequestsHelper.Get(Urls.GetFriends.GetDiscription(), model.Cookie, model.Proxy, model.UserAgent));

                var currentCount = friends.Count;

                var counter = 0;

                while (true)
                {
                    ScrollPage(driver);
                    friends = GetFriendLinks(driver);
                    if (friends.Count > currentCount)
                    {
                        currentCount = friends.Count;
                    }
                    else
                    {
                        var countPercentage = Convert.ToInt32(countFriendsLabel) / 100 * PercentageOfError;

                        if ((Convert.ToInt32(countFriendsLabel) - countPercentage <= currentCount) || counter > 3)
                        {
                            break;
                        }

                        counter++;
                    }
                }

                friends = GetFriendLinks(driver);
                var errorElements = new List <IWebElement>();

                foreach (var webElement in friends)
                {
                    try
                    {
                        var nameElement = webElement.FindElement(By.CssSelector(".fsl.fwb.fcb"));
                        var name        = nameElement != null ? nameElement.Text : "";

                        var idElement = webElement.FindElement(By.CssSelector(".fsl.fwb.fcb>a"));
                        var attr      = idElement.GetAttribute("data-gt");

                        var id  = ParseFacebookId(attr);
                        var uri = "https://www.facebook.com/profile.php?id=" + id;

                        var friendModels = new FriendsResponseModel
                        {
                            FacebookId = Convert.ToInt64(id),
                            FriendName = name,
                            Uri        = uri
                        };
                        friendsList.Add(friendModels);
                    }
                    catch (Exception ex)
                    {
                        errorElements.Add(webElement);
                    }
                }

                driver.Quit();
            }
            catch (Exception ex)
            {
                driver.Quit();
            }

            return(friendsList);
        }
Exemplo n.º 22
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);
            string query = command.CommandDetail;

            // Responds asynchronously.
            Task.Run(async() =>
            {
                JContainer json;
                string message = null;

                string weapon = Splatoon.SplatoonDefs.TryFindWeapon(query);
                if (weapon != null)
                {
                    try
                    {
                        string buildsQuery = $@"query {{
  searchForBuilds(weapon: ""{weapon}"")
  {{
    headgear
    clothing
    shoes
  }}
}}";
                        string builtUrl    = $"{url}?query={Uri.EscapeUriString(buildsQuery)}";
                        json = (JContainer)JsonConvert.DeserializeObject(await RequestsHelper.CurlGetCommand(builtUrl, origin).ConfigureAwait(false));
                    }
                    catch (Exception ex)
                    {
                        json    = null;
                        message = ($"{Emojis.NoEntry} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_ServerNotFound")}");
                        Console.WriteLine(ex);
                    }

                    try
                    {
                        dynamic jsonResult = json["data"]["searchForBuilds"];
                        int count          = 0;
                        foreach (var node in jsonResult)
                        {
                            JArray headgear    = node["headgear"];
                            JArray clothing    = node["clothing"];
                            JArray shoes       = node["shoes"];
                            string[] mains     = new string[] { headgear[0].ToString(), clothing[0].ToString(), shoes[0].ToString() };
                            List <string> subs = new List <string>();
                            subs.AddRange(headgear.Skip <JToken>(1).Values <string>());
                            subs.AddRange(clothing.Skip <JToken>(1).Values <string>());
                            subs.AddRange(shoes.Skip <JToken>(1).Values <string>());
                            var mainsDict    = new Dictionary <string, int>(mains.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).OrderByDescending(pair => pair.Value));
                            var subsDict     = new Dictionary <string, int>(subs.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count()).OrderByDescending(pair => pair.Value));
                            StringBuilder sb = new StringBuilder();
                            foreach (var pair in mainsDict)
                            {
                                sb.Append(pair.Value).Append("m");
                                if (subsDict.ContainsKey(pair.Key))
                                {
                                    sb.Append(pair.Value).Append("s");
                                    subsDict.Remove(pair.Key);
                                }
                                sb.Append(" ").Append(pair.Key).Append(", ");
                            }
                            foreach (var pair in subsDict)
                            {
                                sb.Append(pair.Value).Append("s");
                                sb.Append(" ").Append(pair.Key).Append(", ");
                            }
                            sb.AppendLine();
                            message += sb.ToString();
                            count++;
                            if (count > 6)
                            {
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        message = ($"{Emojis.NoEntry} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_Oops")}");
                        Console.WriteLine(ex);
                    }
                }
                else
                {
                    message = ($"{Emojis.QuestionSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_NoResults")}");
                }

                Response asyncResponse = new Response
                {
                    ResponseType = ResponseType.Default,
                    Embed        = EmbedUtility.ToEmbed(message, null),
                    Message      = message
                };

                await asyncResponder.SendResponseAsync(args, asyncResponse);
            });

            // Return out the lifecycle with no response.
            return(new[] { Response.WaitForAsync });
        }
Exemplo n.º 23
0
 public RequestsIntegrationTest()
 {
     requestsHelper = new RequestsHelper(new Mock <ILogger <RequestsHelper> >().Object);
     requests       = new RequestManager(new Mock <ILogger <RequestManager> >().Object, requestsHelper);
 }