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.

96 lines
3.8 KiB

  1. using Common.Models;
  2. using Common.Models.RequestResponse;
  3. using Common.Utility;
  4. using log4net;
  5. using Newtonsoft.Json;
  6. using Newtonsoft.Json.Linq;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Net.Http;
  11. using System.Net.Http.Headers;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace Business.BusinessLogic.Signature
  15. {
  16. public class ApiHelper
  17. {
  18. private static int timeOut = 100;
  19. private string tp_base_url = GetStatic.ReadWebConfig("signature_Base_Url", "");
  20. private readonly ILog _log = LogManager.GetLogger(typeof(ApiHelper));
  21. public ResponseModel ThirdPartyApi<RequestModel, ResponseModel>(RequestModel model, string method, out TPResponse jsonResponse, string MethodType = "post")
  22. {
  23. ResponseModel _responseModel = default(ResponseModel);
  24. using (HttpClient httpClient = new HttpClient())
  25. {
  26. try
  27. {
  28. httpClient.BaseAddress = new Uri(tp_base_url);
  29. httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  30. httpClient.Timeout = new TimeSpan(0, 0, timeOut);
  31. HttpResponseMessage resp = new HttpResponseMessage();
  32. if (MethodType.ToLower().Equals("get"))
  33. resp = httpClient.GetAsync(method).Result;
  34. if (MethodType.ToLower().Equals("put"))
  35. {
  36. StringContent jbdContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
  37. resp = httpClient.PutAsync(method, jbdContent).Result;
  38. }
  39. if (MethodType.ToLower().Equals("post"))
  40. {
  41. StringContent jbdContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
  42. resp = httpClient.PostAsync(method, jbdContent).Result;
  43. }
  44. string resultData = resp.Content.ReadAsStringAsync().Result;
  45. if (resp.IsSuccessStatusCode)
  46. {
  47. var result = resp.Content.ReadAsStringAsync().Result;
  48. JObject a = JObject.Parse(result);
  49. _responseModel = a.ToObject<ResponseModel>();
  50. }
  51. else
  52. {
  53. _log.Debug("ThirdPartyApi | RESPONSE: " + resp.ToString());
  54. jsonResponse = new TPResponse()
  55. {
  56. Id = resp.StatusCode.ToString(),
  57. Msg = resp.Content.ToString(),
  58. Data = resp
  59. };
  60. }
  61. }
  62. catch (HttpRequestException ex)
  63. {
  64. jsonResponse = new TPResponse()
  65. {
  66. ResponseCode = "999",
  67. Msg = ex.ToString(),
  68. Data = ex.Data,
  69. };
  70. _responseModel = default(ResponseModel);
  71. }
  72. catch (Exception ex)
  73. {
  74. jsonResponse = new TPResponse()
  75. {
  76. ResponseCode = "999",
  77. Msg = ex.ToString(),
  78. Data = ex.Data,
  79. };
  80. _responseModel = default(ResponseModel);
  81. }
  82. };
  83. jsonResponse = new TPResponse()
  84. {
  85. ResponseCode = "0",
  86. Msg = "Api Calling process successfully!"
  87. };
  88. return _responseModel;
  89. }
  90. }
  91. }