Exemplo n.º 1
0
 public string EncodeBase64(IQueryData data, MenuType type)
 {
     return(UrlBase64Serializer.Base64Encode(new QueryDataRaw
     {
         Type = type,
         Data = ProtoSerializerHelper.Serialize(data, RuntimeTypeModel.Default)
     }));
 }
Exemplo n.º 2
0
 public FieldChange[] ToData(Change[] changes)
 {
     return(changes.Select(x => new FieldChange
     {
         Field = x.Tag,
         NewValue = ProtoSerializerHelper.Serialize(x.ValueNew, _changesSearcher.ProtobufTypeModel),
         OldValue = ProtoSerializerHelper.Serialize(x.ValueOld, _changesSearcher.ProtobufTypeModel)
     }).ToArray());
 }
Exemplo n.º 3
0
        public IQueryData DecodeBase64(string base64)
        {
            var rawData = UrlBase64Serializer.Base64Decode <QueryDataRaw>(base64);

            if (_typeMap.ContainsKey(rawData.Type))
            {
                return((IQueryData)ProtoSerializerHelper.Deserialize(_typeMap[rawData.Type], rawData.Data, RuntimeTypeModel.Default));
            }
            throw new Exception($"Для типа {rawData.Type} не указан тип декодинга");
        }
Exemplo n.º 4
0
        public FieldChangeModel[] GetFormatted(FieldChange[] fieldChanges)
        {
            return(fieldChanges.Select(x =>
            {
                var fi = _fieldsInfos[x.Field];
                var oldVal = ProtoSerializerHelper.Deserialize(fi.PropertyInfo.PropertyType, x.OldValue, _changesSearcher.ProtobufTypeModel);
                var newVal = ProtoSerializerHelper.Deserialize(fi.PropertyInfo.PropertyType, x.NewValue, _changesSearcher.ProtobufTypeModel);

                return new FieldChangeModel
                {
                    Header = fi.Header,
                    ValueOld = fi.FormatFunc(oldVal),
                    ValueNew = fi.FormatFunc(newVal)
                };
            }).ToArray());
        }
Exemplo n.º 5
0
        public void ChangesProtobufTest()
        {
            var typeModel = TypeModel.Create();

            typeModel.Add(typeof(Person), false)
            .Add(1, nameof(Person.FirstName))
            .Add(2, nameof(Person.LastName))
            .Add(3, nameof(Person.Dogs));

            typeModel.Add(typeof(Dog), false)
            .Add(4, nameof(Dog.Name));

            Person person = new Person
            {
                FirstName = "Maxim",
                LastName  = "Solodov",
                Dogs      = new[]
                {
                    new Dog()
                    {
                        Name = "Charlik"
                    },
                    new Dog()
                    {
                        Name = "Sharik"
                    },
                    new Dog()
                    {
                        Name = "Sarik"
                    }
                }
            };

            var bytes = ProtoSerializerHelper.Serialize(person, typeModel);

            var data = ProtoSerializerHelper.Deserialize <Person>(bytes, typeModel);
        }