Example #1
0
        public static byte[] Serialize(object obj)
        {
            if (obj == null)
            {
                throw new ArgumentNullException("obj");
            }
            byte[] bytes;

            if (obj is BsonDocument)
            {
                bytes = fastBinaryJSON.BJSON.ToBJSON(((BsonDocument)obj).RawValue);
            }
            else
            {
                // add parameters on serialization to ignore BsonIgnoreAttribute + Id attribute
                var param = new fastBinaryJSON.BJSONParameters
                {
                    UseExtensions    = false,
                    UsingGlobalTypes = false,
                    IgnoreAttributes = new List <Type> {
                        typeof(BsonIgnoreAttribute)
                    },
                    IgnoreProperty = GetIdProperty(obj.GetType())
                };

                bytes = fastBinaryJSON.BJSON.ToBJSON(obj, param);
            }

            if (bytes.Length > BsonDocument.MAX_DOCUMENT_SIZE)
            {
                throw new LiteException("Document size too long");
            }

            return(bytes);
        }
Example #2
0
        /// <summary>
        /// опубликовать информация об обновлении книги
        /// </summary>
        /// <param name="authorUrl">урл автора</param>
        /// <param name="book">книга</param>
        /// <param name="authorName">имя автора</param>
        public void PublishMessageUpdatedBook(AuthorText book, string authorUrl, string authorName)
        {
            var paramJson = new fastJSON.JSONParameters
            {
                UsingGlobalTypes     = false,
                EnableAnonymousTypes = true,
                UseExtensions        = false
            };


            var paramBJson = new fastBinaryJSON.BJSONParameters
            {
                UsingGlobalTypes     = false,
                EnableAnonymousTypes = true,
                UseExtensions        = false
            };


            try
            {
                if (_settings.UseMessageBroker)
                {
                    var transportBookInfo = new TransportBookInfo()
                    {
                        AuthorLink  = authorUrl,
                        AuthorName  = authorName,
                        Description = book.Description,
                        Genres      = book.Genres,
                        Link        = book.Link,
                        Name        = book.Name,
                        SectionName = book.SectionName,
                        Size        = book.Size,
                        UpdateDate  = DateTime.Now.ToUniversalTime().Ticks
                    };
                    var jsonTransportBookInfo = fastBinaryJSON.BJSON.Instance.ToBJSON(transportBookInfo, paramBJson);// fastJSON.JSON.Instance.ToJSON(transportBookInfo);
                    var command = new SubscriptionMessageCommand()
                    {
                        JsonObjectBytes = jsonTransportBookInfo
                    };
                    PublishMessageUpdatedBook(fastJSON.JSON.Instance.ToJSON(command, paramJson));
                }
            }
            catch (Exception ex)
            {
                //_logger.Add("Остановлен сервис подписки на push-уведомления об обновлениях.");
            }
        }
Example #3
0
        public void PublishMessageUpdatedBook(Logger logger, Setting settings, AuthorText book, string authorUrl, string authorName)
        {
            if (!settings.UseMessageBroker)
            {
                return;
            }
            CheckProxy(settings);

            var paramBJson = new fastBinaryJSON.BJSONParameters
            {
                UsingGlobalTypes     = false,
                EnableAnonymousTypes = true,
                UseExtensions        = false
            };


            try
            {
                var transportBookInfo = new TransportBookInfo()
                {
                    AuthorLink  = authorUrl,
                    AuthorName  = authorName,
                    Description = book.Description,
                    Genres      = book.Genres,
                    Link        = book.Link,
                    Name        = book.Name,
                    SectionName = book.SectionName,
                    Size        = book.Size,
                    UpdateDate  = DateTime.Now.ToUniversalTime().Ticks
                };
                var jsonTransportBookInfo = fastBinaryJSON.BJSON.Instance.ToBJSON(transportBookInfo, paramBJson);

                var rpc = new JsonRpcClient(_proxy)
                {
                    Url = _apiUrl
                };
                rpc.Invoke <BooleanOperationResult>(
                    new RpcCommand()
                {
                    Method = "SetUpdateInfo", ParametersArray = new object[] { "clientId", SubscriptionManager.CurrentClientId, "jsonObjectBytes", jsonTransportBookInfo, "appId", "slkdjfhsjdfks928347832940hfjdsf982738r9" }
                },
                    (data) =>
                    GetUiControl().InvokeIfRequired(() =>

                {
                    if (data == null)
                    {
                        logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer", true);
                    }
                    else if (data.Result)
                    {
                        // ну, отослали успешно, чо делать-то? Да ничего. :-)
                    }
                    else
                    {
                        logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer: " + data.Error, true);
                    }
                }, DispatcherPriority.Normal), (error) => GetUiControl().InvokeIfRequired(() => logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer: " + error.Message, true), DispatcherPriority.Normal));
            }
            catch (Exception ex)
            {
                logger.Add("Ошибка работы модуля общения с сервером статистики SIInformer: " + ex.Message, true);
            }
        }