148 lines
5.5 KiB
C#
148 lines
5.5 KiB
C#
using System;
|
|
using System.Net.Http;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Amazon.S3.Model;
|
|
|
|
|
|
namespace ServerCore;
|
|
|
|
|
|
// HANDOVER: HttpClient SDK Wrapper 클래스 이다.
|
|
|
|
public sealed class SharedHttpClient : Singleton<SharedHttpClient>
|
|
{
|
|
private readonly HttpClient m_http_client = new();
|
|
|
|
public SharedHttpClient()
|
|
{
|
|
}
|
|
|
|
//=============================================================================================
|
|
// 일반적인 HTTP 요청 처리 (GET, POST, PUT, DELETE 등 모든 메서드 지원)
|
|
//=============================================================================================
|
|
public async Task<HttpResponseMessage?> sendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default)
|
|
{
|
|
var err_msg = string.Empty;
|
|
|
|
try
|
|
{
|
|
return await m_http_client.SendAsync(requestMessage, cancellationToken);
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
err_msg = $"HttpRequestException !!!, Network error or invalid response, Failed to perform in sendAsync() : exception:{e} - {requestMessage.RequestUri}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (TaskCanceledException e)
|
|
{
|
|
if (cancellationToken.IsCancellationRequested)
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request was canceled by caller, Failed to perform in sendAsync() : exception:{e} - {requestMessage.RequestUri}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
else
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request timed out, Failed to perform in sendAsync() : exception:{e} - {requestMessage.RequestUri}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
}
|
|
catch (TimeoutException e)
|
|
{
|
|
err_msg = $"TimeoutException !!!, The request exceeded the timeout limit, Failed to perform in sendAsync() : exception:{e} - {requestMessage.RequestUri}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
err_msg = $"Exception !!!, Unhandled exception during HTTP request, Failed to perform in sendAsync() : exception:{e} - {requestMessage.RequestUri}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public async Task<HttpResponseMessage?> getAsync(string url, CancellationToken cancellationToken = default)
|
|
{
|
|
var err_msg = string.Empty;
|
|
|
|
try
|
|
{
|
|
// GET Http Method
|
|
return await m_http_client.GetAsync(url, cancellationToken);
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
err_msg = $"HttpRequestException !!!, Network error or invalid response, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (TaskCanceledException e)
|
|
{
|
|
if (cancellationToken.IsCancellationRequested)
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request was canceled by caller, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
else
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request timed out, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
}
|
|
catch (TimeoutException e)
|
|
{
|
|
err_msg = $"TimeoutException !!!, The request exceeded the timeout limit, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
err_msg = $"Exception !!!, Unhandled exception during HTTP GET request, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public async Task<HttpResponseMessage?> postAsync(string url, HttpContent content, CancellationToken cancellationToken = default)
|
|
{
|
|
var err_msg = string.Empty;
|
|
|
|
try
|
|
{
|
|
// POST Http Method
|
|
return await m_http_client.PostAsync(url, content, cancellationToken);
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
err_msg = $"HttpRequestException !!!, Network error or invalid response, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (TaskCanceledException e)
|
|
{
|
|
if (cancellationToken.IsCancellationRequested)
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request was canceled by caller, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
else
|
|
{
|
|
err_msg = $"TaskCanceledException !!!, Request timed out, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
}
|
|
catch (TimeoutException e)
|
|
{
|
|
err_msg = $"TimeoutException !!!, The request exceeded the timeout limit, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
err_msg = $"Exception !!!, Unhandled exception during HTTP GET request, Failed to perfom in getAsync() : exception:{e} - {url}";
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|