public IdentifyViewModel(IFaceServiceClient client, IDialogService dialogService)
        {
            this.client = client;
            var fileSelector  = new ObservableFileSelector();
            var imageSelector = new ImageSelector(fileSelector.SelectFilesCommand);

            detector = new Detector(client);

            SelectFilesCommand = fileSelector.SelectFilesCommand;

            var filesObs = SelectFilesCommand.Publish();

            IdentifyCommand = ReactiveCommand.CreateFromTask(IdentifyFaces, imageSelector.Images.Any());

            imagesObs = imageSelector.Images
                        .Select(list => list.Select(data => new IdentificationViewModel(data.Image, data.Source)).ToList())
                        .ToProperty(this, model => model.Identifications);

            IdentifyCommand.Subscribe(SetIdentifications);
            IdentifyCommand.ThrownExceptions.Subscribe(async exception => await dialogService.ShowException(exception));

            isBusyObs = IdentifyCommand.IsExecuting.ToProperty(this, model => model.IsBusy);

            filesObs.Connect();
        }
示例#2
0
        public void Identify_RepositoryOverHttp_ReturnsRevSpec()
        {
            IdentifyCommand cmd = new IdentifyCommand().WithPath("https://hg01.codeplex.com/mercurialnet");

            NonPersistentClient.Execute(cmd);

            Assert.That(cmd.Result, Is.Not.Null);
        }
        public void Identify_RepositoryOverHttp_ReturnsRevSpec()
        {
            IdentifyCommand cmd = new IdentifyCommand().WithPath("https://hg01.codeplex.com/mercurialnet");

            NonPersistentClient.Execute(cmd);

            Assert.That(cmd.Result, Is.Not.Null);
        }
        /// <summary>
        /// The Identify Command
        ///
        /// The identify command starts or stops the receiving device identifying itself.
        ///
        /// <param name="identifyTime" <see cref="ushort"> Identify Time</ param >
        /// <returns> the command result Task </returns>
        /// </summary>
        public Task <CommandResult> IdentifyCommand(ushort identifyTime)
        {
            IdentifyCommand command = new IdentifyCommand();

            // Set the fields
            command.IdentifyTime = identifyTime;

            return(Send(command));
        }
示例#5
0
        private void IdentifyAs(RemoteTcpServer serverEntity, string name)
        {
            var cmd = new IdentifyCommand()
            {
                Name = name
            };

            serverEntity.Send(cmd);
            var response = serverEntity.WaitForNextCommand <IdentifyResponse>();

            Assert.IsTrue(response.Success);
            serverEntity.Name = name;
        }
示例#6
0
        protected override void OnCheckConnection(PluginProfileErrorCollection errors, MercurialPluginProfile settings)
        {
            settings.ValidateUri(errors);

            if (!errors.Any())
            {
                var identifyCommand = new IdentifyCommand().WithPath(settings.Uri).WithTimeout(20);
                NonPersistentClient.Execute(identifyCommand);
                if (identifyCommand.RawExitCode != 0)
                {
                    throw new Exception("Can't establish connection");
                }
            }
        }
        public void Identify_WebSiteThatIsntRepository_ThrowsMercurialExecutionException()
        {
            try
            {
                new WebClient().DownloadString("http://localhost");
            }
            catch (WebException)
            {
                Assert.Inconclusive("No web server set up locally, test not executed");
                return;
            }

            IdentifyCommand cmd = new IdentifyCommand().WithPath("http://localhost");

            Assert.Throws<MercurialExecutionException>(() => NonPersistentClient.Execute(cmd));
        }
示例#8
0
        public void SendIdentify(string token)
        {
            var props = new Dictionary <string, string>
            {
                ["$device"] = "Discord.Net"
            };
            var msg = new IdentifyCommand()
            {
                Token          = token,
                Properties     = props,
                LargeThreshold = _config.LargeThreshold,
                UseCompression = true
            };

            QueueMessage(msg);
        }
示例#9
0
        public void Identify_WebSiteThatIsntRepository_ThrowsMercurialExecutionException()
        {
            try
            {
                new WebClient().DownloadString("http://localhost");
            }
            catch (WebException)
            {
                Assert.Inconclusive("No web server set up locally, test not executed");
                return;
            }

            IdentifyCommand cmd = new IdentifyCommand().WithPath("http://localhost");

            Assert.Throws <MercurialExecutionException>(() => NonPersistentClient.Execute(cmd));
        }
示例#10
0
        public void SendIdentify(string token)
        {
            var props = new Dictionary <string, string>
            {
                ["$device"] = "Discord.Net"
            };
            var msg = new IdentifyCommand()
            {
                Version        = 3,
                Token          = token,
                Properties     = props,
                LargeThreshold = _client.Config.UseLargeThreshold ? 100 : (int?)null,
                UseCompression = true
            };

            QueueMessage(msg);
        }
示例#11
0
        public void SendIdentify(string token, int shardId = 0, int totalShards = 1)
        {
            var props = new Dictionary <string, string>
            {
                ["$device"] = "Discord.Net"
            };
            var msg = new IdentifyCommand()
            {
                Token          = token,
                Properties     = props,
                LargeThreshold = _config.LargeThreshold,
                UseCompression = true,
                ShardingParams = token.StartsWith("Bot ") ? new int[] { shardId, totalShards } : null
            };

            QueueMessage(msg);
        }
 public IdentifyCommandCases()
 {
     _IdentifyCommand = new IdentifyCommand();
     _Command         = _IdentifyCommand;
 }
示例#13
0
 private static void CompareIdentifyCommand(IdentifyCommand c, IdentifyCommand dc)
 {
     Assert.AreEqual(c.Name, dc.Name);
 }
示例#14
0
        public void Identify_WebSiteThatDoesNotExist_ThrowsMercurialExecutionException()
        {
            IdentifyCommand cmd = new IdentifyCommand().WithPath("http://localhostxyzklm");

            Assert.Throws <MercurialExecutionException>(() => NonPersistentClient.Execute(cmd));
        }
 private void IdentifyAs(RemoteTcpServer serverEntity, string name)
 {
     var cmd = new IdentifyCommand()
     {
         Name = name
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<IdentifyResponse>();
     Assert.IsTrue(response.Success);
     serverEntity.Name = name;
 }
        public void Identify_WebSiteThatDoesNotExist_ThrowsMercurialExecutionException()
        {
            IdentifyCommand cmd = new IdentifyCommand().WithPath("http://localhostxyzklm");

            Assert.Throws<MercurialExecutionException>(() => NonPersistentClient.Execute(cmd));
        }
示例#17
0
        public override async Task Connect()
        {
            // Connect to the gateway
            socket = new ClientWebSocket();
            var uri = new Uri(DefaultGateway);
            await socket.ConnectAsync(uri, CancellationToken.None);

            _log.Info("Connected to a Discord socket.");

            // Receive 10 Hello
            var response = await ReceiveMessage();

            if (response.OpCode != (int)MainOpCodeTypes.Hello)
            {
                throw new WebSocketException("Socket Out of Order: First message not OpCode 10, Hello.");
            }
            var hello = response.DeserializeDataPayload <HelloPayload>();

            // Set up messaging systems
            SendMessagesAgentAsync();
            ReceiveMessagesAgentAsync();
            _log.Debug("Started messaging systems.");

            // Send 1 Heartbeat (and continue to do so)
            heart = new MainGatewayHeart(hello.HeartbeatInterval, this);
            _log.Debug("Started heartbeat.");

            // Send 2 Identify
            var identify = new IdentifyCommand {
                Data =
                {
                    AuthenticationToken  = authorizationToken,
                    ConnectionProperties =
                    {
                        OperatingSystemName = "windows",
                        BrowserName         = "mjolnir",
                        DeviceName          = "mjolnir",
                    },
                    AllowCompression   = false,
                    ConnectionPresence =
                    {
                        ConnectionGame      =
                        {
                            Name            = "\"PUNCH LINE!\" by Shokotan ♥ Denpa Gumi",
                        },
                        Status              = "online",
                    }
                }
            };

            await SendMessage(JsonConvert.SerializeObject(identify));

            Console.WriteLine(JsonConvert.SerializeObject(identify));
            _log.Debug("Sent identity.");

            // Receive 0 Ready
            var ready = await readyResponseSource.Task;

            _log.Info($"Current User: {ready.CurrentUser.Username}");
            _log.Info($"Accessible DMs: {ready.AssociatedDirectMessageChannels.Select(c => c.Name).ToSequenceString()}");
            _log.Info($"Accessible Guilds: {ready.AssociatedGuilds.Select(g => g.Id).ToSequenceString()}");

            currentUser = ready.CurrentUser;
            sessionId   = ready.SessionId;

            _log.Info($"Fully connected.");
        }
 private static void CompareIdentifyCommand(IdentifyCommand c, IdentifyCommand dc)
 {
     Assert.AreEqual(c.Name, dc.Name);
 }