sozsoft-platform/api/modules/Sozsoft.Sender/Rocket/RocketHttpClient.cs

39 lines
1.2 KiB
C#
Raw Normal View History

2026-10-17 18:51:10 +00:00
using Volo.Abp.Settings;
2026-02-24 20:44:16 +00:00
namespace Sozsoft.Sender.Rocket;
public interface IRocketHttpClient
{
2026-10-17 18:51:10 +00:00
Task<SendResult?> SendMessageAsync(string Username, string Message);
2026-02-24 20:44:16 +00:00
}
2026-10-17 18:51:10 +00:00
public sealed class RocketHttpClient : SettingHttpClientBase, IRocketHttpClient
2026-02-24 20:44:16 +00:00
{
2026-10-17 18:51:10 +00:00
public RocketHttpClient(HttpClient httpClient, ISettingProvider settingProvider)
: base(httpClient, settingProvider)
2026-02-24 20:44:16 +00:00
{
}
2026-10-17 18:51:10 +00:00
public async Task<SendResult?> SendMessageAsync(string Username, string Message)
2026-02-24 20:44:16 +00:00
{
2026-10-17 18:51:10 +00:00
var url = await GetSettingAsync(RocketSettingNames.Url);
var userId = await GetSettingAsync(RocketSettingNames.UserId);
var token = await GetSettingAsync(RocketSettingNames.Token);
// Rocket.Chat cevabı yalnızca { success } taşır; SendResult aynı sözleşmedir, ayrı DTO gerekmez.
return await PostJsonAsync<SendResult>(
$"{url}/chat.postMessage",
new RocketChatPostMessageInput
{
Channel = $"@{Username}",
Text = Message
},
request =>
{
request.Headers.Add("X-Auth-Token", token);
request.Headers.Add("X-User-Id", userId);
},
ensureSuccess: true);
2026-02-24 20:44:16 +00:00
}
}