38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using Volo.Abp.Settings;
|
||
|
||
namespace Sozsoft.Sender.Rocket;
|
||
|
||
public interface IRocketHttpClient
|
||
{
|
||
Task<SendResult?> SendMessageAsync(string Username, string Message);
|
||
}
|
||
|
||
public sealed class RocketHttpClient : SettingHttpClientBase, IRocketHttpClient
|
||
{
|
||
public RocketHttpClient(HttpClient httpClient, ISettingProvider settingProvider)
|
||
: base(httpClient, settingProvider)
|
||
{
|
||
}
|
||
|
||
public async Task<SendResult?> SendMessageAsync(string Username, string Message)
|
||
{
|
||
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);
|
||
}
|
||
}
|