EmissionModel.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Text.Json;
  2. namespace economy.Models.Emission
  3. {
  4. public class EmissionModel
  5. {
  6. private readonly DataGoKR _dataGoKR;
  7. public EmissionModel(DataGoKR dataGoKR)
  8. {
  9. _dataGoKR = dataGoKR;
  10. }
  11. // 배출권 시세 조회
  12. public async Task<Response> GetEmissionPriceInfo(Request request)
  13. {
  14. Response parseData = new();
  15. try
  16. {
  17. var uriBuilder = new UriBuilder(_dataGoKR.APIUrl)
  18. {
  19. Path = "/1160100/service/GetGeneralProductInfoService/getCertifiedEmissionReductionPriceInfo",
  20. Query = $"serviceKey={_dataGoKR.APIKey}&pageNo={request.PageNo}&numOfRows={request.NumOfRows}&beginBasDt={request.StartDate:yyyyMMdd}&endBasDt={request.EndDate:yyyyMMdd}&resultType=json"
  21. };
  22. if (request.LikeSrtnCd is not null)
  23. {
  24. uriBuilder.Query += $"&likeSrtnCd={request.LikeSrtnCd}";
  25. }
  26. var response = await _dataGoKR.httpClient.GetAsync(uriBuilder.Uri);
  27. if (response.IsSuccessStatusCode)
  28. {
  29. var jsonString = await response.Content.ReadAsStringAsync();
  30. using (var document = JsonDocument.Parse(jsonString))
  31. {
  32. var resEle = document.RootElement.GetProperty("response");
  33. parseData = JsonSerializer.Deserialize<Response>(resEle.GetRawText());
  34. }
  35. if (parseData.Body is null)
  36. {
  37. return new Response();
  38. }
  39. }
  40. response.EnsureSuccessStatusCode();
  41. }
  42. catch (HttpRequestException e)
  43. {
  44. Console.WriteLine($"Request error: {e.Message}");
  45. }
  46. return parseData;
  47. }
  48. }
  49. }