public async Task QueryCodeTest()
        {
            var md5    = "8EA49EB5857E5B29ACD2D44FBA1A289B";
            var result = await QueryHCodeApi.QueryCode(md5);

            string hcode = "/HS4:8@3A740:anipani.exe";

            Assert.AreEqual(hcode, result);
        }
        public HookConfigViewModel(IHookConfigDataService dataService)
        {
            _dataService = dataService;
            HookMapData  = _dataService.GetHookMapData();

            if (IsInDesignMode)
            {
                InputCode     = "/HS-10@21967:NUKITASHI2.EXE";
                Regexp        = @"[\x00-\xFF]";
                SelectedText  = "悠真くんを攻略すれば210円か。なるほどなぁ…";
                ConsoleOutput = "Textractor inject kirikiri\n" +
                                "Textractor inject SiglusEngine\n" +
                                "Textractor inject Cs2";
            }
            else
            {
                // initialize
                InsertCodeCommand         = new RelayCommand(() => Textractor.InsertHook(InputCode), CanInsertCode);
                SelectedHookChangeCommand = new RelayCommand(SelectedHookChangeHandle);
                SubmitCommand             = new RelayCommand(SubmitMessage, CanSubmitMessage);

                if (File.Exists(SimpleIoc.Default.GetInstance <GameInfo>().ConfigPath))
                {
                    Regexp = EHConfig.GetValue(EHNode.Regexp);
                }

                Textractor.DataEvent += DataRecvEventHandler;

                Task.Run(async() =>
                {
                    SearchedCode = await QueryHCodeApi.QueryCode(SimpleIoc.Default.GetInstance <GameInfo>().MD5);
                    if (SearchedCode != "")
                    {
                        log.Info($"Find code {SearchedCode} in Aniclan");
                    }
                });
            }
        }