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.
 
 
 
 
 

151 lines
5.5 KiB

//using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Swift.API;
using Swift.API.Common;
using Swift.API.Common.Enum;
using Swift.API.Common.TrustDoc;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Swift.web.Library
{
public class TrustdocWebAPI
{
public string TrustDocURL { get; set; }
public string TrustDocDataURL { get; set; }
public string Token { get; set; }
public string TrustCertPath { get; set; }
public string TrustCertKey { get; set; }
public TrustdocWebAPI()
{
TrustDocURL = TPGetStatic.ReadWebConfig("TrustDocURL", "");
TrustDocDataURL = TPGetStatic.ReadWebConfig("TrustDocDataURL", "");
Token = TPGetStatic.ReadWebConfig("TrustToken", "");
TrustCertPath = TPGetStatic.ReadWebConfig("TrustCertPath", "");
TrustCertKey = TPGetStatic.ReadWebConfig("TrustCertKey", "");
}
// private static readonly ILog Log = LogManager.GetLogger(typeof(NotifierV2));
public JsonTrustResponse ObtainData(string id, string user, string customerId, string url)
{
DbResult _dbResult = new DbResult();
VerificationStatusResponse _responseModel = new VerificationStatusResponse();
JsonTrustResponse jsonResponse = new JsonTrustResponse();
try
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
using (var handler = new WebRequestHandler())
{
handler.ClientCertificates.Add(new X509Certificate2(TrustCertPath, TrustCertKey));
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {Token}");
_dbResult = Utility.LogRequest(user, "TrustDoc", "ObtainData", customerId, url, id);
// NOTE: accept all languages
httpClient.DefaultRequestHeaders.AcceptLanguage.Clear();
httpClient.DefaultRequestHeaders.AcceptLanguage.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("*"));
// NOTE: accept all media types
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*"));
// System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
System.Net.Http.HttpResponseMessage response;
// NOTE: argument zero may be a URL to text, like HTML, or a zip file, image file, PDF file or any other binary data
response = httpClient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
// Read the file.
var contentType = response.Content.Headers.ContentType.ToString().ToLower();
//Stream resultStream = response.Content.ReadAsStreamAsync().Result;
//// The ContentDisposition header contains the name of the file name
//// that you are donwloading.
//string fileName = response.Content.Headers.ContentDisposition.FileName;
//using (var fileStream = File.Create(@"D:\\doc\\" + DateTime.Now.ToString("yyyymmddhhss") + contentType.GetMIMEExtension()))
//{
// resultStream.CopyTo(fileStream);
//}
jsonResponse.code = "0";
jsonResponse.detail = "Success";
jsonResponse.response = response;
jsonResponse.target = contentType;
}
else
{
string resultData = response.Content.ReadAsStringAsync().Result;
ErrorJosn errorJson = JsonConvert.DeserializeObject<ErrorJosn>(resultData);
//JsonResponse jsonResponseData = JsonConvert.DeserializeObject<JsonResponse>(errorJson.Message);
jsonResponse.code = "1";
jsonResponse.detail = errorJson.Message;
jsonResponse.Data = errorJson;
}
}
}
return jsonResponse;
}
catch (Exception ex)
{
var e = new JsonTrustResponse()
{
code = "1",
detail = "Error has occured. Check logs."
};
Utility.LogResponse(_dbResult.Id, _dbResult.Extra2, "999.1", ex.ToString());
return e;
}
}
}
///NOTE: this class is used to decompress data that is sent compressed, saving bandwidth
}