DayModel.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using economy.Helpers;
  2. namespace economy.Models.Days
  3. {
  4. public class DaysModel
  5. {
  6. private readonly DataGoKR _dataGoKR;
  7. public DaysModel(DataGoKR dataGoKR)
  8. {
  9. _dataGoKR = dataGoKR;
  10. }
  11. // 기념일 조회
  12. public async Task<Anniversary.Response> GetAnniversary(Anniversary.Request request)
  13. {
  14. Anniversary.Response parseData = new();
  15. try
  16. {
  17. var uriBuilder = new UriBuilder(_dataGoKR.APIUrl)
  18. {
  19. Path = "/B090041/openapi/service/SpcdeInfoService/getAnniversaryInfo",
  20. Query = $"ServiceKey={_dataGoKR.APIKey}&numOfRows=100&solYear={request.Year}"
  21. };
  22. var response = await _dataGoKR.httpClient.GetAsync(uriBuilder.Uri);
  23. if (response.IsSuccessStatusCode)
  24. {
  25. var xmlString = await response.Content.ReadAsStringAsync();
  26. parseData = await Common.ParseXmlDataAsync<Anniversary.Response>(xmlString);
  27. if (parseData.Body is null)
  28. {
  29. return new Anniversary.Response();
  30. }
  31. }
  32. response.EnsureSuccessStatusCode();
  33. }
  34. catch (HttpRequestException e)
  35. {
  36. Console.WriteLine($"Request error: {e.Message}");
  37. }
  38. return parseData;
  39. }
  40. // 국경일 조회
  41. public async Task<Holiday.Response> GetHoliday(Holiday.Request request)
  42. {
  43. Holiday.Response parseData = new();
  44. try
  45. {
  46. var uriBuilder = new UriBuilder(_dataGoKR.APIUrl)
  47. {
  48. Path = "/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo",
  49. Query = $"ServiceKey={_dataGoKR.APIKey}&numOfRows=100&solYear={request.Year}"
  50. };
  51. var response = await _dataGoKR.httpClient.GetAsync(uriBuilder.Uri);
  52. if (response.IsSuccessStatusCode)
  53. {
  54. var xmlString = await response.Content.ReadAsStringAsync();
  55. parseData = await Common.ParseXmlDataAsync<Holiday.Response>(xmlString);
  56. if (parseData.Body is null)
  57. {
  58. return new Holiday.Response();
  59. }
  60. }
  61. response.EnsureSuccessStatusCode();
  62. }
  63. catch (HttpRequestException e)
  64. {
  65. Console.WriteLine($"Request error: {e.Message}");
  66. }
  67. return parseData;
  68. }
  69. // 기념일 조회
  70. public async Task<Seasonal.Response> GetSeasonal(Seasonal.Request request)
  71. {
  72. Seasonal.Response parseData = new();
  73. try
  74. {
  75. var uriBuilder = new UriBuilder(_dataGoKR.APIUrl)
  76. {
  77. Path = "/B090041/openapi/service/SpcdeInfoService/get24DivisionsInfo",
  78. Query = $"ServiceKey={_dataGoKR.APIKey}&numOfRows=100&solYear={request.Year}"
  79. };
  80. var response = await _dataGoKR.httpClient.GetAsync(uriBuilder.Uri);
  81. if (response.IsSuccessStatusCode)
  82. {
  83. var xmlString = await response.Content.ReadAsStringAsync();
  84. parseData = await Common.ParseXmlDataAsync<Seasonal.Response>(xmlString);
  85. if (parseData.Body is null)
  86. {
  87. return new Seasonal.Response();
  88. }
  89. }
  90. response.EnsureSuccessStatusCode();
  91. }
  92. catch (HttpRequestException e)
  93. {
  94. Console.WriteLine($"Request error: {e.Message}");
  95. }
  96. return parseData;
  97. }
  98. // 잡절 조회
  99. public async Task<Sundry.Response> GetSundry(Sundry.Request request)
  100. {
  101. Sundry.Response parseData = new();
  102. try
  103. {
  104. var uriBuilder = new UriBuilder(_dataGoKR.APIUrl)
  105. {
  106. Path = "/B090041/openapi/service/SpcdeInfoService/getSundryDayInfo",
  107. Query = $"ServiceKey={_dataGoKR.APIKey}&numOfRows=100&solYear={request.Year}"
  108. };
  109. var response = await _dataGoKR.httpClient.GetAsync(uriBuilder.Uri);
  110. if (response.IsSuccessStatusCode)
  111. {
  112. var xmlString = await response.Content.ReadAsStringAsync();
  113. parseData = await Common.ParseXmlDataAsync<Sundry.Response>(xmlString);
  114. if (parseData.Body is null)
  115. {
  116. return new Sundry.Response();
  117. }
  118. }
  119. response.EnsureSuccessStatusCode();
  120. }
  121. catch (HttpRequestException e)
  122. {
  123. Console.WriteLine($"Request error: {e.Message}");
  124. }
  125. return parseData;
  126. }
  127. }
  128. }