public Public(ISystemController systemController, IAccountController accountController)
        {
            Get["/login"] = parameters =>
            {
                return(View["Home/Login.cshtml", new ViewModel {
                                Version = systemController.GetVersion(), AccessGranted = true
                            }]);
            };
            Post["/login"] = parameters =>
            {
                var data          = this.Bind <CreditsRequest>();
                var user          = accountController.GetUserByName(data.Login);
                var accessGranted = user != null && accountController.IsPasswordCorrect(user, data.Password);
                var viewModel     = new ViewModel
                {
                    Version       = systemController.GetVersion(),
                    User          = user,
                    AccessGranted = accessGranted
                };
                if (!accessGranted)
                {
                    return(View["Home/Login.cshtml", viewModel]);
                }

                var result = this.LoginAndRedirect(user.Id, null, "/");
                return(result);
            };
            Post["/version"] = parameters =>
            {
                return(systemController.GetVersion());
            };
        }
 public OperationController(IBlockController blockController,
                            ISystemController systemController,
                            IUnitOfWorkFactory unitOfWorkFactory)
 {
     _unitOfWork       = unitOfWorkFactory.Create();
     _blockController  = blockController;
     _systemController = systemController;
 }
        public SystemErrorHandler(
            IHttpContextFactory httpContextFactory,
            ISystemController systemController
            )
        {
            if (httpContextFactory == null)
                throw new ArgumentNullException("httpContextFactory");
            if (systemController == null)
                throw new ArgumentNullException("systemController");

            this.httpContextFactory = httpContextFactory;
            this.systemController = systemController;
        }
        public MessageTermination(Bootstrap bootstrap, ISystemController systemController)
        {
            MessageOperationManager.Builder operationBuilder = new MessageOperationManager.Builder();
            operationBuilder.WithMessageQueueOut(bootstrap.GetMessageQueueFromVariableSet(TERMINATION));

            MessageProcessorManager messageProcessorManager = MessageProcessorManager.Builder.NewBuilder()
                                                              .WithSystemController(systemController)
                                                              .WithHeartbeatCache(bootstrap.GetCachedFromVariableSet(HEARTBEAT_CACHE))
                                                              .WithOutMessageQueue(bootstrap.GetMessageQueueFromVariableSet(TERMINATION))
                                                              .Build();

            operationBuilder.WithProcessManager(messageProcessorManager);

            manager = operationBuilder.Build();
        }
        public SystemErrorHandler(
            IHttpContextFactory httpContextFactory,
            ISystemController systemController
            )
        {
            if (httpContextFactory == null)
            {
                throw new ArgumentNullException("httpContextFactory");
            }
            if (systemController == null)
            {
                throw new ArgumentNullException("systemController");
            }

            this.httpContextFactory = httpContextFactory;
            this.systemController   = systemController;
        }
Beispiel #6
0
        /// <summary>
        /// Main constructor which using
        /// for binding events of Websocket
        /// object with methods of ISystemController interface object (mediator).
        /// </summary>
        /// <param name="_MainController"></param>
        /// <param name="url"></param>
        /// <param name="tokens"></param>
        public WebSocketSignaling(ISystemController _MainController, string url, string[] tokens)
        {
            // Adding reference to Controller.
            // It allows to call methods of interface ISystemCotroller (mediator)
            // to do something (depends of event, which occure on WebSocket object).
            // Concrete implementation of methods ISystemCotroller
            // in SystemCotroller, object of which passed in SystemController code (using keyword this)
            MainController = _MainController;
            // Building WebSocket object.
            // It is main object through which we send and receive data from signaling server
            Url    = SystemConfiguration.SignalingURL;
            Tokens = SystemConfiguration.WebSocketTokens;
            Socket = new WebSocket(Url, Tokens);
            Socket.Connect();
            Socket.OnError += (sender, message) =>
            {
                // Calling method of mediator to notify all system that the
                // WebSocket signaling mechanism object had error and should be closed by mediator
                MainController.SignalingClosed(Socket, message.Message);
            };
            Socket.OnClose += (sender, message) =>
            {
                // Calling method of mediator to notify all system that the
                // WebSocket signaling mechanism object was closed and should be disposed by mediator
                MainController.SignalingClosed(Socket, message.Reason);
            };

            Socket.OnMessage += async(sender, message) =>
            {
                // Calling method of mediator to notify all system that the
                // WebSocket signaling mechanism received message (it can be ICE candidate or SDP message).
                // WebSocket signaling calls method of mediator with parametr of this message to
                // Add ICE or SDP to (WebRTC)PeerConnection of SystemController (ISystemController)
                await MainController.NotifyPeerConnection(Socket, typeof(string), message.Data);
            };

            Console.WriteLine("Constructed Signaling");
        }
 public Builder WithSystemController(ISystemController controller)
 {
     SystemController = controller;
     return(this);
 }
Beispiel #8
0
 // VideoTrackSource initialized in Startup async method
 public UserCell(ISystemController _MainController)
 {
     Console.WriteLine("Working constructor of UserCell in thread {0}", Thread.CurrentThread.ManagedThreadId);
     MainController = _MainController;
 }
 public SacrificeProcessor(ISystemController systemController)
 {
     this.systemController = systemController;
 }
Beispiel #10
0
        public Secured(
            ISystemController systemController,
            IBlockController blockController,
            IOperationController operationController,
            ISerializationController serializationController
            )
        {
            this.RequiresAuthentication();
            var logger = LogManager.GetCurrentClassLogger();

            Get["/master"]     = parameters => View["Views/Home/Master.cshtml"];
            Get["/"]           = parameters => View["Views/Home/Master.cshtml"];
            Post["/api/fonts"] = parameters =>
            {
                try
                {
                    return(Response.AsJson(new FontInfo
                    {
                        Fonts = systemController.GetFonts(),
                        Sizes = systemController.GetFontSizes(),
                        Indexes = systemController.GetFontHeightIndex()
                    }));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки шрифтов", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/datetimeformats"] = parameters =>
            {
                try
                {
                    return(Response.AsJson(systemController.GetDatetimeFormats()));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки форматов даты/времени", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/screenResolution"] = parameters =>
            {
                try
                {
                    var data = this.Bind <ScreenResolutionRequest>();
                    if (!data.RefreshData)
                    {
                        var screenInfo = systemController.GetDatabaseScreenInfo();
                        if (screenInfo == null)
                        {
                            screenInfo = systemController.GetSystemScreenInfo();
                            systemController.SetDatabaseScreenInfo(screenInfo);
                        }
                        return(Response.AsJson(screenInfo));
                    }
                    else
                    {
                        var screenInfo = systemController.GetSystemScreenInfo();
                        systemController.SetDatabaseScreenInfo(screenInfo);
                        return(Response.AsJson(screenInfo));
                    }
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки информации о экранах", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/setBackground"] = parameters =>
            {
                try
                {
                    var data = this.Bind <ScreenBackgroundRequest>();
                    blockController.SetBackground(data.Color);
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка установки фона", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Get["/api/background"] = parameters =>
            {
                try
                {
                    return(Response.AsJson(blockController.GetBackground()));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки фона", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/addTextBlock"] = parameters =>
            {
                try
                {
                    var textBlock = blockController.AddTextBlock();
                    var block     = _mapper.Map <TextBlockDto>(textBlock);
                    return(Response.AsJson(block));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка добавления текстового блока", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/addTableBlock"] = parameters =>
            {
                try
                {
                    var tableBlock = blockController.AddTableBlock();
                    var block      = _mapper.Map <TableBlockDto>(tableBlock);
                    return(Response.AsJson(block));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка добавления таблицы", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/addPictureBlock"] = parameters =>
            {
                try
                {
                    var pictureBlock = blockController.AddPictureBlock();
                    var block        = _mapper.Map <PictureBlockDto>(pictureBlock);
                    return(Response.AsJson(block));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка добавления картинки", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/addDateTimeBlock"] = parameters =>
            {
                try
                {
                    var dateTimeBlock = blockController.AddDateTimeBlock();
                    var block         = _mapper.Map <DateTimeBlockDto>(dateTimeBlock);
                    return(Response.AsJson(block));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка добавления блока даты/времени", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Get["/api/blocks"] = parameters =>
            {
                try
                {
                    var blocks = GetBlocks(blockController);
                    return(Response.AsJson(blocks));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки блоков", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/moveAndResize"] = parameters =>
            {
                try
                {
                    var block = this.Bind <SizeAndPositionDto>();
                    blockController.MoveAndResizeBlock(block.Id, block.Height, block.Width, block.Left, block.Top);
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка изменения размеров и положения блока", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/saveBlock"] = parameters =>
            {
                var savers = new Dictionary <string, Action>()
                {
                    { "text", () => SaveBlock <TextBlock, TextBlockDto>(b => blockController.SaveTextBlock(b)) },
                    { "table", () => SaveBlock <TableBlock, TableBlockDto>(b => blockController.SaveTableBlock(b)) },
                    { "picture", () => SaveBlock <PictureBlock, PictureBlockDto>(b => blockController.SavePictureBlock(b)) },
                    { "datetime", () => SaveBlock <DateTimeBlock, DateTimeBlockDto>(b => blockController.SaveDateTimeBlock(b)) }
                };

                try
                {
                    var data = this.Bind <BlockDto>();
                    savers.First(kvp => kvp.Key.Equals(data.Type, StringComparison.InvariantCultureIgnoreCase)).Value.Invoke();
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка сохранения блоков", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/deleteBlock"] = parameters =>
            {
                try
                {
                    var data = this.Bind <BlockDto>();
                    blockController.DeleteBlock(data.Id);
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка удаления блоков", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/copyBlock"] = parameters =>
            {
                var copiers = new Dictionary <string, Func <object> >
                {
                    { "text", () => CopyBlock <TextBlock, TextBlockDto>(b => blockController.CopyTextBlock(b)) },
                    { "table", () => CopyBlock <TableBlock, TableBlockDto>(b => blockController.CopyTableBlock(b)) },
                    { "picture", () => CopyBlock <PictureBlock, PictureBlockDto>(b => blockController.CopyPictureBlock(b)) },
                    { "datetime", () => CopyBlock <DateTimeBlock, DateTimeBlockDto>(b => blockController.CopyDateTimeBlock(b)) }
                };

                try
                {
                    var data = this.Bind <BlockDto>();
                    return(copiers.First(kvp => kvp.Key.Equals(data.Type, StringComparison.InvariantCultureIgnoreCase)).Value.Invoke());
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка копирования блоков", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/startShow"] = parameters =>
            {
                try
                {
                    operationController.StartShow();
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка запуска полноэкранного режима", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/stopShow"] = parameters =>
            {
                try
                {
                    operationController.StopShow();
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка остановки полноэкранного режима", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/parseCSV"] = parameters =>
            {
                try
                {
                    var linesSeparator = new char[] { '\r', '\n' };
                    var itemSeparator  = ',';

                    var data   = this.Bind <CsvDataDto>();
                    var lines  = data.Text.Split(linesSeparator, StringSplitOptions.RemoveEmptyEntries);
                    var result = new CsvTableDto();
                    result.Header.AddRange(lines.First().Split(itemSeparator));
                    var rowIndex = 0;
                    foreach (var line in lines.Skip(1))
                    {
                        var cells = line.Split(itemSeparator);
                        var delta = cells.Length - result.Header.Count;
                        if (delta > 0)
                        {
                            for (int i = 0; i < delta; i++)
                            {
                                result.Header.Add(string.Empty);
                            }
                        }
                        result.Rows.Add(new RowDto
                        {
                            Index = rowIndex,
                            Cells = cells
                        });
                        rowIndex++;
                    }

                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка чтения csv", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Get["/api/downloadConfig"] = parameters =>
            {
                try
                {
                    var response = new Response
                    {
                        ContentType = "text/xml",
                        Contents    = (stream) => serializationController.SerializeXML(new ConfigDto
                        {
                            Background = blockController.GetBackground(),
                            Blocks     = GetBlocks(blockController).ToList()
                        }).CopyTo(stream)
                    };
                    response.Headers.Add("Content-Disposition", "attachment; filename=config.xml");
                    return(response);
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка выгрузки конфигурации", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
            Post["/api/uploadConfig"] = parameters =>
            {
                try
                {
                    var data      = this.Bind <ConfigDataDto>();
                    var configDto = serializationController.Deserialize <ConfigDto>(data.Text);
                    blockController.SetBackground(configDto.Background);
                    blockController.Cleanup();
                    foreach (var b in configDto.Blocks)
                    {
                        if (b is TextBlockDto textBlock)
                        {
                            var block = _mapper.Map <TextBlock>(textBlock);
                            blockController.SaveTextBlock(block);
                        }
                        if (b is TableBlockDto tableBlock)
                        {
                            var block = _mapper.Map <TableBlock>(tableBlock);
                            blockController.SaveTableBlock(block);
                        }
                        if (b is PictureBlockDto pictureBlock)
                        {
                            var block = _mapper.Map <PictureBlock>(pictureBlock);
                            blockController.SavePictureBlock(block);
                        }
                    }
                    return(Response.AsJson(true));
                }
                catch (Exception ex)
                {
                    var exception = new Exception("Ошибка загрузки конфигурации", ex);
                    logger.Error(exception);
                    throw exception;
                }
            };
        }
Beispiel #11
0
        public static PeerConnection BindPeerWithController(PeerConnection connection, ISystemController controller)
        {
            connection.Connected += () =>
            {
                controller.PeerConnected(connection, "New user connected");
            };


            connection.IceCandidateReadytoSend += (candidate) =>
            {
                Console.WriteLine("Candidate to send: {0}", candidate.ToABJson());
                controller.NotifySignaling(connection, typeof(IceCandidate), candidate.ToABJson());
            };

            connection.LocalSdpReadytoSend += (sdp) =>
            {
                Console.WriteLine("SDP to send: {0}", sdp.ToABJson());
                controller.NotifySignaling(connection, typeof(SdpMessage), sdp.ToABJson());
            };

            connection.RenegotiationNeeded += () =>
            {
                Console.WriteLine("Regotiation");
                bool OfferCreated = connection.CreateOffer();
            };
            connection.IceStateChanged += async(state) =>
            {
                if (state == IceConnectionState.Closed)
                {
                    Console.WriteLine("Connection was closed, call Controller.PeerConnectionClosed");
                    await controller.PeerConnectionClosed(connection, "ICE state change to closed");
                }
                if (state == IceConnectionState.Disconnected)
                {
                    controller.PeerConnectionDisconnected(connection, "ICE state change to disconnected");
                }
            };
            return(connection);
        }
Beispiel #12
0
 public BlockController(ISystemController systemController,
                        IUnitOfWorkFactory unitOfWorkFactory)
 {
     _unitOfWork       = unitOfWorkFactory.Create();
     _systemController = systemController;
 }