Guest User

Untitled

a guest
Mar 22nd, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. protected async Task<FbrResponse> StartXmlRequestCycle(RequestContext context, string request)
  2. {
  3. for (int attemptNumber = 0; attemptNumber < _maxRequestAttemptNumber; attemptNumber++)
  4. {
  5. XmlDocument xmlResponse = await _xmlRequester.SendRequest(context, request);
  6.  
  7. await Logger.Build(LogLevel.Info)
  8. .SetMessage($"Попытка запроса номер {attemptNumber}. Результат в busMessage")
  9. .SetBusMessage(xmlResponse.InnerXml)
  10. .SetModule(this)
  11. .SetCompany(context.CompanyId)
  12. .Send();
  13.  
  14. FbrResponse response = ExtractModelResponse(xmlResponse);
  15.  
  16. if (await CheckResponse(context, response, attemptNumber))
  17. {
  18. return response;
  19. }
  20. }
  21.  
  22. return null;
  23. }
  24.  
  25.  
  26. private async Task<bool> CheckResponse(
  27. RequestContext context,
  28. FbrResponse response,
  29. int attemptNumber)
  30. {
  31. if (response?.State?.Status == "ok" || !string.IsNullOrEmpty(response?.State?.Apid))
  32. {
  33. string apid = response.State.Apid;
  34.  
  35. await Logger.Build(LogLevel.Info)
  36. .SetMessage($"Попытка запроса номер {attemptNumber} увенчалась успехом. Apid = {apid}")
  37. .SetModule(this)
  38. .SetBusMessage(response)
  39. .SetCompany(context.CompanyId)
  40. .Send();
  41.  
  42. return true;
  43. }
  44.  
  45. if (response?.State?.Status == "err")
  46. {
  47. if (response?.State?.Error == "Системная ошибка")
  48. {
  49. await Logger.Build(LogLevel.Error)
  50. .SetMessage($"Попытка запроса номер {attemptNumber} привела к системной ошибке.")
  51. .SetModule(this)
  52. .SetBusMessage(response)
  53. .SetCompany(context.CompanyId)
  54. .Send();
  55.  
  56. return false;
  57. }
  58. else
  59. {
  60. await Logger.Build(LogLevel.Error)
  61. .SetMessage($"При запросе номер {attemptNumber} произошла неизвестная ошибка. Прекращаем обработку.")
  62. .SetModule(this)
  63. .SetBusMessage(response)
  64. .SetCompany(context.CompanyId)
  65. .Send();
  66.  
  67. throw new FbrWrongDataException($"При запросе номер {attemptNumber} произошла неизвестная ошибка или количество попыток было исчерпано.");
  68. }
  69. }
  70.  
  71. await Logger.Build(LogLevel.Error)
  72. .SetMessage($"При запросе номер {attemptNumber} пришел непоятный ответ. Прекращаем обработку.")
  73. .SetModule(this)
  74. .SetBusMessage(response)
  75. .SetCompany(context.CompanyId)
  76. .Send();
  77.  
  78. return false;
  79. }
Add Comment
Please, Sign In to add comment