You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
4.1 KiB

11 months ago
11 months ago
11 months ago
  1. using CustomerOnlineV2.Common.Helper;
  2. using CustomerOnlineV2.Common.Models;
  3. using Microsoft.Extensions.Configuration;
  4. using Newtonsoft.Json;
  5. using Newtonsoft.Json.Linq;
  6. using System.Net.Http.Headers;
  7. using System.Text;
  8. namespace CustomerOnlineV2.Business.Business
  9. {
  10. public class ThirdPartyAPI
  11. {
  12. private static int timeOut = 100;
  13. //private string tp_base_url = Common.Configs.ConfigurationManager.AppSettings["tp_base_url"];
  14. //private string apiAccessKey = Common.Configs.ConfigurationManager.AppSettings["apiAccessKey"];
  15. private string tp_base_url = Utilities.ReadFromAppSettings("tp_base_url");
  16. private string apiAccessKey = Utilities.ReadFromAppSettings("apiAccessKey");
  17. public ResponseModel ThirdPartyApiGetDataOnly<RequestModel, ResponseModel>(RequestModel model, string api_url, out APIJsonResponse jsonResponse, string MethodType = "post")
  18. {
  19. ResponseModel _responseModel = default(ResponseModel);
  20. using (HttpClient httpClient = new HttpClient())
  21. {
  22. try
  23. {
  24. httpClient.BaseAddress = new Uri(tp_base_url);
  25. httpClient.DefaultRequestHeaders.Add("apiAccessKey", apiAccessKey);
  26. httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  27. httpClient.Timeout = new TimeSpan(0, 0, timeOut);
  28. HttpResponseMessage resp = new HttpResponseMessage();
  29. if (MethodType.ToLower().Equals("get"))
  30. resp = httpClient.GetAsync(api_url).Result;
  31. if (MethodType.ToLower().Equals("put"))
  32. {
  33. StringContent jbdContent = new StringContent(JsonConvert.SerializeObject(model).ToString(), Encoding.UTF8, "application/json");
  34. resp = httpClient.PutAsync(api_url, jbdContent).Result;
  35. }
  36. if (MethodType.ToLower().Equals("post"))
  37. {
  38. var jsonData = JsonConvert.SerializeObject(model).ToString();
  39. StringContent jbdContent = new StringContent(jsonData, Encoding.UTF8, "application/json");
  40. resp = httpClient.PostAsync(api_url, jbdContent).Result;
  41. }
  42. string resultData = resp.Content.ReadAsStringAsync().Result;
  43. if (resp.IsSuccessStatusCode)
  44. {
  45. var result = resp.Content.ReadAsStringAsync().Result;
  46. JObject a = JObject.Parse(result);
  47. _responseModel = a.ToObject<ResponseModel>();
  48. }
  49. else
  50. {
  51. ErrorJosn errorJson = JsonConvert.DeserializeObject<ErrorJosn>(resultData);
  52. APIJsonResponse jsonResponseData = JsonConvert.DeserializeObject<APIJsonResponse>(errorJson.Message);
  53. List<Data> data = JsonConvert.DeserializeObject<List<Data>>(jsonResponseData.Data.ToString());
  54. jsonResponse = new APIJsonResponse()
  55. {
  56. Id = jsonResponseData.Id,
  57. Msg = jsonResponseData.Msg,
  58. Data = data,
  59. Extra = jsonResponseData.Extra,
  60. Extra1 = jsonResponseData.Extra1
  61. };
  62. }
  63. }
  64. catch (HttpRequestException ex)
  65. {
  66. jsonResponse = new APIJsonResponse()
  67. {
  68. ResponseCode = "999",
  69. Msg = ex.Message,
  70. Data = ex.Data,
  71. };
  72. _responseModel = default(ResponseModel);
  73. }
  74. };
  75. jsonResponse = new APIJsonResponse()
  76. {
  77. ResponseCode = "0",
  78. Msg = "Api Calling process successfully!"
  79. };
  80. return _responseModel;
  81. }
  82. }
  83. }