[store] Basic content store implementation.

- Bump Telegram Bot Framework to 0.6.9-gf1e77653ff
This commit is contained in:
West14
2022-02-16 17:07:30 +02:00
parent 67d0e81953
commit e815deba58
15 changed files with 376 additions and 2 deletions
@@ -0,0 +1,27 @@
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using West.TelegramBot.ContentStore.Model;
namespace West.TelegramBot.ContentStore.Service;
public class AnimBoobsService : IRandomMediaService
{
private readonly HttpClient _httpClient;
public AnimBoobsService()
{
_httpClient = new HttpClient()
{
BaseAddress = new Uri("https://westdev.me/_boobs/")
};
}
public async Task<RandomMedia> GetRandomMediaAsync()
{
var fileName = await _httpClient.GetStringAsync("index.php");
return new RandomMedia($"https://westdev.me/_boobs/media/{fileName}")
{
Type = InputMediaType.Video
};
}
}
@@ -0,0 +1,24 @@
using Newtonsoft.Json;
using West.TelegramBot.ContentStore.Model;
namespace West.TelegramBot.ContentStore.Service;
public abstract class AnimalAsAService : IRandomMediaService
{
private readonly HttpClient _httpClient;
protected AnimalAsAService(Uri baseAddress)
{
_httpClient = new HttpClient
{
BaseAddress = baseAddress
};
}
public async Task<RandomMedia> GetRandomMediaAsync()
{
var resp = await _httpClient.GetAsync("images/search");
var catImage = JsonConvert.DeserializeObject<List<AnimalImage>>(await resp.Content.ReadAsStringAsync())[0];
return new RandomMedia(catImage.Url);
}
}
@@ -0,0 +1,10 @@
using Newtonsoft.Json;
using Telegram.Bot.Types;
using West.TelegramBot.ContentStore.Model;
namespace West.TelegramBot.ContentStore.Service;
public class CatApiService : AnimalAsAService
{
public CatApiService() : base(new Uri("https://api.thecatapi.com/v1/")) {}
}
@@ -0,0 +1,6 @@
namespace West.TelegramBot.ContentStore.Service;
public class DogApiService : AnimalAsAService
{
public DogApiService() : base(new Uri("https://api.thedogapi.com/v1/")) {}
}
@@ -0,0 +1,9 @@
using Telegram.Bot.Types;
using West.TelegramBot.ContentStore.Model;
namespace West.TelegramBot.ContentStore.Service;
public interface IRandomMediaService
{
public Task<RandomMedia> GetRandomMediaAsync();
}
@@ -0,0 +1,28 @@
using Newtonsoft.Json;
using Telegram.Bot.Types;
using West.TelegramBot.ContentStore.Model;
namespace West.TelegramBot.ContentStore.Service;
public class OBoobsService : IRandomMediaService
{
private readonly HttpClient _httpClient;
public OBoobsService()
{
_httpClient = new HttpClient
{
BaseAddress = new Uri("http://api.oboobs.ru")
};
}
public async Task<RandomMedia> GetRandomMediaAsync()
{
var httpResp = await _httpClient.GetAsync("boobs/1/1/random");
var boobsResponse = JsonConvert.DeserializeObject<List<OBoobsItem>>(await httpResp.Content.ReadAsStringAsync());
var boobsItem = boobsResponse[0];
var boobsId = boobsItem.Id.ToString("D5");
return new RandomMedia($"https://media.oboobs.ru/boobs/{boobsId}.jpg", boobsItem.Model);
}
}