erp-platform/api/modules/Erp.Sender/Rocket/RocketHttpClient.cs

51 lines
1.7 KiB
C#
Raw Normal View History

2025-05-06 06:45:49 +00:00
using System.Net.Http.Json;
using Microsoft.Extensions.Logging;
using Volo.Abp.Settings;
2025-11-11 19:49:52 +00:00
namespace Erp.Sender.Rocket;
2025-05-06 06:45:49 +00:00
public interface IRocketHttpClient
{
Task<RocketSendResultDto> SendMessageAsync(string Username, string Message);
}
public sealed class RocketHttpClient : IRocketHttpClient, IDisposable
{
private readonly HttpClient httpClient;
private readonly ILogger<RocketHttpClient> logger;
private readonly ISettingProvider settingProvider;
public RocketHttpClient(
HttpClient httpClient,
ILogger<RocketHttpClient> logger,
ISettingProvider settingProvider)
{
this.httpClient = httpClient;
this.logger = logger;
this.settingProvider = settingProvider;
}
public async Task<RocketSendResultDto> SendMessageAsync(string Username, string Message)
{
var url = await settingProvider.GetOrNullAsync(RocketSettingNames.Url);
var userId = await settingProvider.GetOrNullAsync(RocketSettingNames.UserId);
var token = await settingProvider.GetOrNullAsync(RocketSettingNames.Token);
var request = new HttpRequestMessage(HttpMethod.Post, $"{url}/chat.postMessage");
request.Headers.Add("X-Auth-Token", token);
request.Headers.Add("X-User-Id", userId);
request.Content = JsonContent.Create(new RocketChatPostMessageInput
{
Channel = $"@{Username}",
Text = Message
});
var response = await httpClient.SendAsync(request);
response.EnsureSuccessStatusCode(); // Hata durumunda istisna atar.
return await response.Content.ReadFromJsonAsync<RocketSendResultDto>();
}
public void Dispose() => httpClient?.Dispose();
}
2025-11-11 19:49:52 +00:00