geekbot/Geekbot.net/Lib/Media/MediaProvider.cs

62 lines
2.2 KiB
C#
Raw Normal View History

using System;
using System.IO;
using Geekbot.net.Lib.Logger;
2020-06-25 15:12:41 +02:00
using Geekbot.net.Lib.RandomNumberGenerator;
namespace Geekbot.net.Lib.Media
{
public class MediaProvider : IMediaProvider
{
2020-06-25 15:12:41 +02:00
private readonly IRandomNumberGenerator _random;
private readonly IGeekbotLogger _logger;
private string[] _pandaImages;
private string[] _croissantImages;
private string[] _squirrelImages;
private string[] _pumpkinImages;
private string[] _turtlesImages;
2020-06-25 15:12:41 +02:00
private string[] _penguinImages;
2018-03-28 22:14:07 +02:00
private string[] _foxImages;
2019-05-01 18:22:44 +02:00
private string[] _dabImages;
2020-06-25 15:12:41 +02:00
public MediaProvider(IGeekbotLogger logger, IRandomNumberGenerator random)
{
2020-06-25 15:12:41 +02:00
_random = random;
_logger = logger;
logger.Information(LogSource.Geekbot, "Loading Media Files");
2020-05-21 15:55:04 +02:00
;
2020-06-25 15:12:41 +02:00
LoadMedia("./Storage/pandas", ref _pandaImages);
LoadMedia("./Storage/croissant", ref _croissantImages);
LoadMedia("./Storage/squirrel", ref _squirrelImages);
LoadMedia("./Storage/pumpkin", ref _pumpkinImages);
LoadMedia("./Storage/turtles", ref _turtlesImages);
LoadMedia("./Storage/penguins", ref _penguinImages);
LoadMedia("./Storage/foxes", ref _foxImages);
LoadMedia("./Storage/dab", ref _dabImages);
2019-05-01 18:22:44 +02:00
}
2020-05-21 15:55:04 +02:00
2020-06-25 15:12:41 +02:00
private void LoadMedia(string path, ref string[] storage)
{
2020-06-25 15:12:41 +02:00
var rawLinks = File.ReadAllText(Path.GetFullPath(path));
storage = rawLinks.Split("\n");
_logger.Trace(LogSource.Geekbot, $"Loaded {storage.Length} Images from ${path}");
}
2020-06-25 15:12:41 +02:00
public string GetMedia(MediaType type)
{
var collection = type switch
{
MediaType.Panda => _pandaImages,
MediaType.Croissant => _croissantImages,
MediaType.Squirrel => _squirrelImages,
MediaType.Pumpkin => _pumpkinImages,
MediaType.Turtle => _turtlesImages,
MediaType.Penguin => _penguinImages,
MediaType.Fox => _foxImages,
MediaType.Dab => _dabImages
};
return collection[_random.Next(0, collection.Length)];
2019-05-01 18:22:44 +02:00
}
}
}