示例#1
0
        static void ProcessCore(ApiSession rpSession)
        {
            var rApi      = rpSession.DisplayUrl;
            var rResponse = rpSession.ResponseBodyString;

            try
            {
                var rContent = rResponse.Replace("svdata=", string.Empty);

                ApiParserBase rParser;
                if (!rContent.IsNullOrEmpty() && rContent.StartsWith("{") && r_Parsers.TryGetValue(rApi, out rParser))
                {
                    var rJson = JObject.Parse(rContent);

                    var rResultCode = (int)rJson["api_result"];
                    if (rResultCode != 1)
                    {
                        Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_Failed, rApi, rResultCode));
                        return;
                    }

                    var rData = new ApiInfo(rpSession, rApi, rpSession.Parameters, rJson);

                    rParser.Process(rData);
                }
            }
            catch (AggregateException e) when(e.InnerExceptions.Count == 1)
            {
                Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.InnerExceptions[0].Message));

                rpSession.ErrorMessage = e.ToString();
                HandleException(rpSession, e);
            }
            catch (Exception e)
            {
                Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.Message));

                rpSession.ErrorMessage = e.ToString();
                HandleException(rpSession, e);
            }
        }
 public void Subscription(ApiInfo rpInfo)
 {
     try
     {
         r_Action(rpInfo);
     }
     catch (SQLiteException e) when(e.ResultCode == SQLiteErrorCode.Error && RecordService.Instance.HistoryCommandTexts.Count > 0)
     {
         Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.Message));
         RecordService.Instance.HandleException(rpInfo.Session, e);
     }
     catch (AggregateException e) when(e.InnerExceptions.Count == 1)
     {
         Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.InnerExceptions[0].Message));
         RecordService.Instance.HandleException(rpInfo.Session, e);
     }
     catch (Exception e)
     {
         Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.Message));
         ApiParserManager.HandleException(rpInfo.Session, e);
     }
 }
 protected void OnBeforeProcessStarted(ApiInfo rpInfo) => BeforeProcessStarted?.Invoke(rpInfo);
 protected void OnAfterProcessCompleted(ApiInfo rpInfo) => AfterProcessCompleted?.Invoke(rpInfo);
 internal abstract void Process(ApiInfo rpInfo);