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.
 
 
 

93 lines
4.2 KiB

using Common;
using Common.Helper;
using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
namespace Business.TPApi
{
public class ThirdPartyAPI
{
private static int timeOut = 100;
private string tp_base_url = GetStatic.ReadWebConfig("ThirdParty_Base_Url", "");
private string apiAccessKey = GetStatic.ReadWebConfig("apiAccessKey", "");
private readonly ILog _log = LogManager.GetLogger(typeof(ThirdPartyApi));
public ResponseModel ThirdPartyApiGetDataOnly<RequestModel, ResponseModel>(RequestModel model, string api_url, out APIJsonResponse jsonResponse, string MethodType = "post")
{
ResponseModel _responseModel = default(ResponseModel);
using (HttpClient httpClient = new HttpClient())
{
try
{
httpClient.BaseAddress = new Uri(tp_base_url);
httpClient.DefaultRequestHeaders.Add("apiAccessKey", apiAccessKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.Timeout = new TimeSpan(0, 0, timeOut);
HttpResponseMessage resp = new HttpResponseMessage();
if (MethodType.ToLower().Equals("get"))
resp = httpClient.GetAsync(api_url).Result;
if (MethodType.ToLower().Equals("put"))
{
StringContent jbdContent = new StringContent(JsonConvert.SerializeObject(model).ToString(), Encoding.UTF8, "application/json");
resp = httpClient.PutAsync(api_url, jbdContent).Result;
}
if (MethodType.ToLower().Equals("post"))
{
var jsonData = JsonConvert.SerializeObject(model).ToString();
StringContent jbdContent = new StringContent(jsonData, Encoding.UTF8, "application/json");
resp = httpClient.PostAsync(api_url, jbdContent).Result;
}
string resultData = resp.Content.ReadAsStringAsync().Result;
if (resp.IsSuccessStatusCode)
{
var result = resp.Content.ReadAsStringAsync().Result;
JObject a = JObject.Parse(result);
_responseModel = a.ToObject<ResponseModel>();
}
else
{
_log.Debug("ThirdPartyApiGetDataOnly | RESPONSE: " + resp.ToString());
ErrorJosn errorJson = JsonConvert.DeserializeObject<ErrorJosn>(resultData);
APIJsonResponse jsonResponseData = JsonConvert.DeserializeObject<APIJsonResponse>(errorJson.Message);
List<Data> data = JsonConvert.DeserializeObject<List<Data>>(jsonResponseData.Data.ToString());
jsonResponse = new APIJsonResponse()
{
Id = jsonResponseData.Id,
Msg = jsonResponseData.Msg,
Data = data,
Extra = jsonResponseData.Extra,
Extra1 = jsonResponseData.Extra1,
Extra2 = jsonResponseData.Extra2,
Extra3 = jsonResponseData.Extra3,
Extra4 = jsonResponseData.Extra4
};
}
}
catch (HttpRequestException ex)
{
jsonResponse = new APIJsonResponse()
{
ResponseCode = "999",
Msg = ex.Message,
Data = ex.Data,
};
_responseModel = default(ResponseModel);
}
};
jsonResponse = new APIJsonResponse()
{
ResponseCode = "0",
Msg = "Api Calling process successfully!"
};
return _responseModel;
}
}
}