Files
caliverse_server/ServerCore/HttpClient/SharedHttpClient.cs
2025-11-28 16:54:56 +09:00

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;
}
}