mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using BotFramework.Utils;
|
|
using Kruzya.TelegramBot.Core.Data;
|
|
using Kruzya.TelegramBot.Core.Extensions;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Telegram.Bot.Types;
|
|
using West.TelegramBot.ContentStore.Model;
|
|
|
|
namespace West.TelegramBot.ContentStore.Service;
|
|
|
|
public abstract class AbstractKittiesService : IRandomMediaService
|
|
{
|
|
private readonly CoreContext _db;
|
|
protected abstract string VideoType { get; }
|
|
|
|
public abstract StoreItem StoreItem { get; }
|
|
private readonly HttpClient _httpClient;
|
|
|
|
protected AbstractKittiesService(IConfiguration configuration, CoreContext db)
|
|
{
|
|
_db = db;
|
|
var section = configuration.GetSection("KittiesService");
|
|
|
|
var uri = section.GetValue<Uri>("Uri");
|
|
var token = section.GetValue<string>("Token");
|
|
|
|
_httpClient = new HttpClient
|
|
{
|
|
BaseAddress = uri,
|
|
DefaultRequestHeaders =
|
|
{
|
|
Authorization = new AuthenticationHeaderValue("Bearer", token)
|
|
}
|
|
};
|
|
}
|
|
|
|
public async Task<RandomMedia> GetRandomMediaAsync()
|
|
{
|
|
var response = await _httpClient.GetAsync($"v1/{VideoType}");
|
|
var headers = response.Headers;
|
|
var videoSource = headers.GetValues("X-Video-Source").FirstOrDefault(string.Empty);
|
|
var videoTitleBase64 = headers.GetValues("X-Video-Title").FirstOrDefault(string.Empty);
|
|
var videoTitle = Encoding.UTF8.GetString(Convert.FromBase64String(videoTitleBase64));
|
|
|
|
return new RandomMedia(
|
|
new InputFile(await response.Content.ReadAsStreamAsync()),
|
|
new HtmlString().Url(videoSource, videoTitle).ToString(),
|
|
true
|
|
);
|
|
}
|
|
|
|
public async Task<bool> CanView(Chat chat, User user)
|
|
{
|
|
var option = await _db.UserValues.FindOrCreateOption(chat.Id, "AllowNSFW");
|
|
|
|
return option.GetValue(false);
|
|
}
|
|
} |