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);