Ejemplo n.º 1
0
        public void Add(Field field)
        {
            if (field == null || FieldTrackingIds.Contains(field.TrackingId))
            {
                return;
            }

            _passwordFields = _usernameFields = null;
            FieldTrackingIds.Add(field.TrackingId);
            Fields.Add(field);
            AutofillIds.Add(field.AutofillId);

            if (field.Hints != null)
            {
                foreach (var hint in field.Hints)
                {
                    Hints.Add(hint);
                    if (field.Focused)
                    {
                        FocusedHints.Add(hint);
                    }
                    if (!HintToFieldsMap.ContainsKey(hint))
                    {
                        HintToFieldsMap.Add(hint, new List <Field>());
                    }
                    HintToFieldsMap[hint].Add(field);
                }
            }
        }
Ejemplo n.º 2
0
        private static void InitHintsOffsets()
        {
            // Нужно растянуть подсказки так, чтобы за час, или даже четыре, их было нереально докачать.
            // Соответственно, последняя подсказка должна быть дальше, чем:
            // DownloadSpeedBytesPerSecond * 3600 * 3 (bytes)
            // В соответствии с задумкой располагать данные через увеличивающиеся промежутки трэша, то есть: +-+--+----+--------+...
            // получаем, что нужно найти степень двойки >= чем наш последний оффсет:

            const long minimumLastOffset = DownloadSpeedBytesPerSecond * 3600 * 5;

            log.Debug(string.Format("minimumLastOffset: {0}", minimumLastOffset));

            var numberOfOffsets = (int)Math.Ceiling(Math.Log(minimumLastOffset) / Math.Log(2));
            var spacing         = Encoding.UTF8.GetBytes(FirstHints[0]).Length;
            var rand            = new Random();

            HintOffsets.Add(0);

            for (var i = 0; i < numberOfOffsets - 1; i++)
            {
                var nextOffset = (long)(spacing * 2 * (Math.Pow(2, i) + 1));
                HintOffsets.Add(nextOffset);
                var nextHint = i < 4 ? FirstHints[i] : HintsPool[rand.Next(HintsPool.Length)];

                Hints.Add(string.Format(nextHint, nextOffset));
                log.Info(i + ": " + Hints[i]);
            }

            Hints.Add(Flag);

            TotalFileLength = HintOffsets[numberOfOffsets - 1] + Encoding.UTF8.GetBytes(Hints[numberOfOffsets - 1]).Length;
        }
Ejemplo n.º 3
0
 private void AddHint(object obj)
 {
     if (!Guard.IsNullOrEmpty(CurrentHint))
     {
         Hints.Add(CurrentHint.Trim());
     }
 }
Ejemplo n.º 4
0
        public void GetUsers()
        {
            var users = _getUsersFunc.Invoke();

            Hints.Clear();
            foreach (var user in users)
            {
                Hints.Add(user);
            }
        }
Ejemplo n.º 5
0
        public void SetParameters(EmojiSuggestionParams parameters)
        {
            Parameters = parameters;

            Hints.Clear();
            if (Parameters != null &&
                Parameters.Results != null)
            {
                int maxCount = 5;
                for (int index = 0; index < parameters.Results.Length && index < maxCount; index++)
                {
                    var result = parameters.Results[index];
                    Hints.Add(result);
                }
            }
        }
Ejemplo n.º 6
0
        private void SearchHints()
        {
            _itemsController.ResetHints();

            IEnumerable <Dictionary.WordList> dictLists = GetDictionaryListsByLanguage(LanguageFrom.Code);

            foreach (Dictionary.WordList dictList in dictLists)
            {
                var resultList = dictList.WildSearch(SearchQuery, _hintsMaxCount);
                if (resultList.Items.Count == 0)
                {
                    //Здесь должен быть поиск  с морфологией
                }
                if (resultList.Items.Count == 0)
                {
                    resultList = dictList.SpellingSearch(SearchQuery);//Поиск с опечатками
                }
                if (resultList.Items.Count > 0)
                {
                    foreach (Dictionary.ListItem item in resultList.Items)
                    {
                        if (_itemsController.CanAddHint())
                        {
                            if (!_articleService.IsEqualsStrings(item.ShowVariants[Dictionary.ShowVariantsTypes.Show], SearchQuery))
                            {
                                Hints.Add(new DictionaryItem(item));
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                }
            }
        }
Ejemplo n.º 7
0
        private string Sanitize(Variant value)
        {
            string final = null;

            if (value.GetVariantType() == Variant.VariantType.ByteString)
            {
                try
                {
                    final = encoding.GetString((byte[])value);
                }
                catch (DecoderFallbackException)
                {
                    throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " bytes.");
                }
            }
            if (value.GetVariantType() == Variant.VariantType.BitStream)
            {
                try
                {
                    var rdr = new BitReader((BitwiseStream)value);
                    rdr.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
                    final = rdr.ReadString(encoding);
                }
                catch (DecoderFallbackException)
                {
                    throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " bytes.");
                }
            }
            else
            {
                try
                {
                    encoding.GetBytes((string)value);
                }
                catch
                {
                    throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " characters.");
                }

                final = (string)value;
            }

            if (_hasLength)
            {
                var lenType = lengthType;
                var len     = length;

                if (lenType == LengthType.Chars)
                {
                    if (NeedsExpand(final.Length, len, nullTerminated, final))
                    {
                        if (nullTerminated)
                        {
                            len -= 1;
                        }

                        final += MakePad((int)len - final.Length);
                    }
                }
                else
                {
                    if (lenType == LengthType.Bits)
                    {
                        if ((len % 8) != 0)
                        {
                            throw new PeachException("Error, " + debugName + " has invalid length of " + len + " bits.");
                        }

                        len     = len / 8;
                        lenType = LengthType.Bytes;
                    }

                    System.Diagnostics.Debug.Assert(lenType == LengthType.Bytes);

                    int actual = encoding.GetByteCount(final);

                    if (NeedsExpand(actual, len, nullTerminated, final))
                    {
                        int nullLen = encoding.GetByteCount("\0");
                        int padLen  = encoding.GetByteCount(new char[1] {
                            padCharacter
                        });

                        int grow = (int)len - actual;

                        if (nullTerminated)
                        {
                            grow -= nullLen;
                        }

                        if (grow < 0 || (grow % padLen) != 0)
                        {
                            throw new PeachException(string.Format("Error, can not satisfy length requirement of {1} {2} when padding {3} {0}.",
                                                                   debugName, lengthType == LengthType.Bits ? len * 8 : len, lengthType.ToString().ToLower(), stringType));
                        }

                        final += MakePad(grow / padLen);
                    }
                }
            }

            int test;

            if (int.TryParse(final, out test))
            {
                if (!Hints.ContainsKey("NumericalString"))
                {
                    Hints.Add("NumericalString", new Hint("NumericalString", "true"));
                }
            }
            else
            {
                if (Hints.ContainsKey("NumericalString"))
                {
                    Hints.Remove("NumericalString");
                }
            }

            return(final);
        }