public void Serialize_ObjectToSerializeParameterIsNull_ArgumentNullExceptionIsThrown()
        {
            // Arrange
            var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>();
            PublishConfiguration publishConfiguration = null;

            // Act
            jsonObjectSerializer.Serialize(publishConfiguration);
        }
        public void Deserialize_SerializedObjectParameterIsNull_ArgumentNullExceptionIsThrown()
        {
            // Arrange
            var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>();
            string serializedObject = null;

            // Act
            jsonObjectSerializer.Deserialize(serializedObject);
        }
Exemplo n.º 3
0
        private async void RNAdapter_ReceivedNotification1(NotificationInfoForRequesting args)
        {
            JSONObjectSerializer <string> serializer = new JSONObjectSerializer <string>();
            var content = serializer.BytesToObject(args.NotificationPreviewContent);

            await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {
                Messages.Add(new PreviewModel {
                    Content = content, NotificationAccessKey = args.NotificationAccessKey, NotificationId = args.NotificationId
                });
                NoNotificationVisibility = _Messages.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
            });
        }
Exemplo n.º 4
0
        private async Task InitializeMessages()
        {
            JSONObjectSerializer <string> serializer = new JSONObjectSerializer <string>();
            IEnumerable <NotificationInfoForRequesting> previewRawdatas = await RawNotification.DotNetCoreBL.RNAdapter.GetAllPreviewData();

            List <PreviewModel> previewData = new List <PreviewModel>(previewRawdatas.Count());

            foreach (var item in previewRawdatas)
            {
                previewData.Add(new PreviewModel {
                    Content = serializer.BytesToObject(item.NotificationPreviewContent), NotificationId = item.NotificationId, NotificationAccessKey = item.NotificationAccessKey
                });
            }
            Messages = new ObservableCollection <PreviewModel>(previewData);
            NoNotificationVisibility = _Messages.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
        }
        public void Deserialize_PublishConfiguration_SerializedObjectIsValidJson_ResultIsNotNull()
        {
            // Arrange
            var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>();

            var name = Guid.NewGuid().ToString();
            var location = Guid.NewGuid().ToString();
            var apiKey = Guid.NewGuid().ToString();
            string serializedObject = string.Format("{{ Name: \"{0}\", PublishLocation: \"{1}\", ApiKey: \"{2}\" }}", name, location, apiKey);

            // Act
            var result = jsonObjectSerializer.Deserialize(serializedObject);

            // Assert
            Assert.IsNotNull(result);
        }
        public void Serialize_PublishConfiguration_JsonContainsAllProperties()
        {
            // Arrange
            var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>();

            var name = Guid.NewGuid().ToString();
            var location = Guid.NewGuid().ToString();
            var apiKey = Guid.NewGuid().ToString();
            var publishConfiguration = new PublishConfiguration { Name = name, PublishLocation = location, ApiKey = apiKey };

            // Act
            var result = jsonObjectSerializer.Serialize(publishConfiguration);

            // Assert
            Assert.IsTrue(result.Contains(name));
            Assert.IsTrue(result.Contains(location));
            Assert.IsTrue(result.Contains(apiKey));
        }
        public void Deserialize_PublishConfiguration_SerializedObjectIsValidJson_ResultContainsCorrectProperties()
        {
            // Arrange
            var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>();

            var name = Guid.NewGuid().ToString();
            var location = Guid.NewGuid().ToString();
            var apiKey = Guid.NewGuid().ToString();
            string serializedObject = string.Format("{{ Name: \"{0}\", PublishLocation: \"{1}\", ApiKey: \"{2}\" }}", name, location, apiKey);

            // Act
            var result = jsonObjectSerializer.Deserialize(serializedObject);

            // Assert
            Assert.AreEqual(name, result.Name);
            Assert.AreEqual(location, result.PublishLocation);
            Assert.AreEqual(apiKey, result.ApiKey);
        }
        public void Setup()
        {
            this.applicationInformation = ApplicationInformationProvider.GetApplicationInformation();
            IEncodingProvider encodingProvider = new DefaultFileEncodingProvider();
            IFilesystemAccessor filesystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            IPackageServerFactory packageServerFactory = new PackageServerFactory();
            IPublishConfigurationFactory publishConfigurationFactory = new PublishConfigurationFactory();
            IObjectSerializer<PublishConfiguration[]> publishConfigurationSerializer = new JSONObjectSerializer<PublishConfiguration[]>();
            IFilesystemPersistence<PublishConfiguration[]> publishConfigurationPersistence = new FilesystemPersistence<PublishConfiguration[]>(filesystemAccessor, publishConfigurationSerializer);
            this.publishConfigurationAccessor = new ConfigFilePublishConfigurationAccessor(this.applicationInformation, publishConfigurationFactory, publishConfigurationPersistence);

            this.publishingService = new PublishingService(filesystemAccessor, packageServerFactory, this.publishConfigurationAccessor);

            this.localPublishingFolder = Path.Combine(this.applicationInformation.StartupFolder, "publish-target");
            this.samplePackageFilepath = Path.Combine(this.applicationInformation.StartupFolder, "IntegrationTests", "Publishing", SamplePackageFilename);
        }
        public void Setup()
        {
            var applicationInformation = ApplicationInformationProvider.GetApplicationInformation();

            var encodingProvider = new DefaultFileEncodingProvider();
            var fileSystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            var objectSerializer = new JSONObjectSerializer<PackageInfo[]>();
            IFilesystemPersistence<PackageInfo[]> packageInfoFilesystemPersistence = new FilesystemPersistence<PackageInfo[]>(
                fileSystemAccessor, objectSerializer);

            this.packageConfigurationAccessor = new PackageConfigurationAccessor(applicationInformation, packageInfoFilesystemPersistence);
        }
Exemplo n.º 10
0
        public void SendAllNotificationAsync()
        {
            Monitor.Enter(SendAllLock);
            var asyncresult = Task.Run <int>(async() =>
            {
                _Logger.Info("Begin send notifications session");

                try
                {
                    // check for inernet connection
                    if (!new InterNetworkConnectionChecker().IsInternetAvailable())
                    {
                        _Logger.Info("Internet not available");
                        return(1);
                    }

                    // delete all read already notification
                    DB.NotificationDA.RemoveAllReadNotification();

                    // lấy tất cả các thông báo cần gửi tới thiết bị
                    var result = DB.NotificationDA.GetAllPendingDeviceNotificationInfo();

                    #region Gửi thông báo tới cho các thiết bị

                    // Ta sử dụng một hàng đợi để thêm các task vào
                    Queue <Task> TaskQueue      = new Queue <Task>();
                    bool IsNetworkErrorOccurred = false;
                    bool IsWNSOtherErorOccurred = false;

                    List <PendingNotificationInfo> SuccessNotifiList = new List <PendingNotificationInfo>(100);
                    List <PendingNotificationInfo> BadURINotifiList  = new List <PendingNotificationInfo>(100);
                    Dictionary <long, byte[]> RequestCache           = new Dictionary <long, byte[]>(100);

                    JSONObjectSerializer <NotificationInfoForRequesting> serializer = new JSONObjectSerializer <NotificationInfoForRequesting>();

                    foreach (var noti in result)
                    {
                        // với một thông báo cần gửi thì ta sẽ gửi nó bằng một task riêng biệt
                        Task task = Task.Run(() =>
                        {
                            byte[] sendData = null;
                            lock (RequestCache)
                            {
                                try
                                {
                                    sendData = RequestCache[noti.NotificationId];
                                }
                                catch
                                {
                                    sendData = serializer.ObjectToBytes(new NotificationInfoForRequesting {
                                        NotificationId = noti.NotificationId, NotificationAccessKey = noti.NotificationAccessKey, NotificationPreviewContent = noti.NotificationPreviewContent, ReiceiverNotificationID = noti.ReceiverNotificationId
                                    });
                                    RequestCache.Add(noti.NotificationId, sendData);
                                }
                            }

                            switch (noti.DeviceOSId)
                            {
                            case (int)EnumOperatingSystem.Windows:
                                {
                                    if (IsNetworkErrorOccurred && IsWNSOtherErorOccurred)
                                    {
                                        return;
                                    }
                                    var sendResult = _WNSSender.SendNotificationData(noti.DeviceURI, sendData);
                                    switch (sendResult)
                                    {
                                    case EnumWNSSendResult.Success:
                                        {
                                            SuccessNotifiList.Add(noti);
                                        }
                                        break;

                                    case EnumWNSSendResult.BadURI:
                                        {
                                            BadURINotifiList.Add(noti);
                                        }
                                        break;

                                    case EnumWNSSendResult.NetWorkError:
                                        {
                                            // if an Internet Error Occurred, we can cancel all task in foreach loop
                                            // WNSSender will log this
                                            IsNetworkErrorOccurred = true;
                                            break;
                                        }

                                    case EnumWNSSendResult.OtherErrors:
                                        {
                                            // WNSSender will log this
                                            IsWNSOtherErorOccurred = true;
                                        }
                                        break;
                                    }
                                    break;
                                }
                                //TODO: thêm các xử lí cho các hệ điều hành khác ở đây
                            }
                        });

                        // add task to queue
                        TaskQueue.Enqueue(task);
                    }

                    // Wait all tasks complete
                    while (TaskQueue.Count > 0)
                    {
                        await TaskQueue.Dequeue();
                    }

                    foreach (var item in BadURINotifiList)
                    {
                        DB.DeviceDA.DeleteDevice(item.DeviceId, item.ReceiverId);
                    }

                    foreach (var item in SuccessNotifiList)
                    {
                        DB.DeviceNotificationDA.DeleteDeviceNotification(item.DeviceNotificationId);
                    }

                    DB.ReceiverDA.DeleteAllReceiverHaveNoDevice();

                    DB.commit();
                    _Logger.Info("Send Done" + Environment.NewLine +
                                 "Total notifications: " + result.Count().ToString() + Environment.NewLine +
                                 "Bad URI: " + BadURINotifiList.Count.ToString() + Environment.NewLine +
                                 "Success: " + SuccessNotifiList.Count.ToString());
                    return(1);
                }
                catch (Exception ex)
                {
                    _Logger.Error("An error occurred while sending notification", ex);
                    throw;
                }
                finally
                {
                    _Logger.Info("End send notifications session");
                }
            }).Result;

            Monitor.Exit(SendAllLock);
            #endregion
        }
        public void Setup()
        {
            var applicationInformation = ApplicationInformationProvider.GetApplicationInformation();

            var encodingProvider = new DefaultFileEncodingProvider();
            var sourceRepositoryConfigurationFactory = new SourceRepositoryConfigurationFactory();
            var objectSerializer = new JSONObjectSerializer<SourceRepositoryConfiguration[]>();
            var filesystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            var filesystemPersistence = new FilesystemPersistence<SourceRepositoryConfiguration[]>(filesystemAccessor, objectSerializer);

            this.sourceRepositoryProvider = new ConfigFileSourceRepositoryProvider(applicationInformation, sourceRepositoryConfigurationFactory, filesystemPersistence);
        }