Beispiel #1
0
        /// <summary>
        /// 更新最佳选项并保存
        /// </summary>
        /// <param name="session"></param>
        private static void UpdateBestAndSave(Session session)
        {
            session.utilDecodeRequest();
            session.utilDecodeResponse();

            var requestBody  = Encoding.UTF8.GetString(session.RequestBody);
            var responseBody = Encoding.UTF8.GetString(session.ResponseBody);

            var kingRequest = KingRequest.Parse(requestBody);
            var kingAnswer  = KingAnswer.Parse(responseBody);

            if (kingAnswer != null && kingAnswer.data != null)
            {
                var data = HistoryDataTable.TryGet(kingRequest);
                if (data != null)
                {
                    var index = kingAnswer.data.answer - 1;
                    data.SearchResult.Best = data.SearchResult.Options[index];
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 从本地和网络查找答案
        /// 并转发给对应的ws客户端
        /// </summary>
        /// <param name="session">会话</param>
        /// <param name="sync">是否同步</param>
        /// <returns></returns>
        private static async Task <HistoryData> SearchHistoryDataAsync(Session session, bool sync)
        {
            session.utilDecodeRequest();
            session.utilDecodeResponse();

            var requestBody  = Encoding.UTF8.GetString(session.RequestBody);
            var responseBody = Encoding.UTF8.GetString(session.ResponseBody);

            var kingQuestion = KingQuestion.Parse(responseBody);

            if (kingQuestion == null || kingQuestion.IsValidate() == false)
            {
                return(null);
            }

            var kingRequest = KingRequest.Parse(requestBody);
            var title       = kingQuestion.data.quiz;
            var beginTime   = DateTime.Now;
            var history     = HistoryDataTable.TryGet(title);

            if (history == null)
            {
                history = new HistoryData
                {
                    QuestionData = kingQuestion.data,
                    KingRequest  = KingRequest.Parse(requestBody),
                    SearchResult = await BaiduSearcher.SearchAsync(kingQuestion, withAnswer)
                };
                HistoryDataTable.TryAdd(history);
            }

            var data = JsonConvert.DeserializeObject <HistoryData>(JsonConvert.SerializeObject(history));

            data.KingRequest  = kingRequest;
            data.QuestionData = kingQuestion.data;
            data.SearchResult = history.SearchResult.CreateNewByQuestionData(kingQuestion.data);
            return(data);
        }