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