using System.Net.Http.Headers; using System.Text; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using West.TelegramBot.ChatQuotes.Model.Quote; using Message = Telegram.Bot.Types.Message; namespace West.TelegramBot.ChatQuotes; public class QuoteGeneratorService { private readonly HttpClient _httpClient; private readonly MediaTypeHeaderValue _mediaType; public QuoteGeneratorService(IConfiguration configuration) { _httpClient = new HttpClient { BaseAddress = new Uri(configuration.GetValue("QuoteApiUrl")) }; _mediaType = MediaTypeHeaderValue.Parse("application/json"); } public async Task GenerateQuoteImage(Message msg) { var request = new Request(msg); var content = new ByteArrayContent(Encoding.UTF8.GetBytes(request.ToJson().ToCharArray())) { Headers = { ContentType = _mediaType } }; var resp = await _httpClient.PostAsync("/generate", content); var quoteResponse = JsonConvert.DeserializeObject(await resp.Content.ReadAsStringAsync()); return quoteResponse.Ok ? new MemoryStream(Convert.FromBase64String(quoteResponse.Result.Image)) : null; } }