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