OilModel.cs 1.7 KB

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