Skip to content

Commit

Permalink
YouTubeChat provider (#215)
Browse files Browse the repository at this point in the history
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
csharpfritz and github-actions[bot] committed Oct 5, 2023
1 parent 362d1c2 commit bed15bb
Show file tree
Hide file tree
Showing 61 changed files with 2,072 additions and 438 deletions.
2 changes: 2 additions & 0 deletions scripts/removeMigration
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
dotnet ef migrations remove --context TagzApp.Storage.Postgres.TagzAppContext -p ../src/TagzApp.Storage.Postgres/ -s ../src/TagzApp.Web
3 changes: 3 additions & 0 deletions src/TagzApp.Common/IApplicationConfigurationRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@ namespace TagzApp.Common;
public interface IApplicationConfigurationRepository
{
Task SetValues(ApplicationConfiguration config);

Task SetValue(string key, string value);

}
10 changes: 9 additions & 1 deletion src/TagzApp.Common/IConfigureProvider.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace TagzApp.Common;

Expand All @@ -16,3 +17,10 @@ public interface IConfigureProvider
Task<IServiceCollection> RegisterServices(IServiceCollection services, CancellationToken cancellationToken = default);

}

public interface INeedConfiguration
{

void SetConfiguration(IConfiguration configuration);

}
6 changes: 6 additions & 0 deletions src/TagzApp.Common/ISocialMediaProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,10 @@ public interface ISocialMediaProvider
/// <returns></returns>
Task<IEnumerable<Content>> GetContentForHashtag(Hashtag tag, DateTimeOffset since);

/// <summary>
/// Start the provider
/// </summary>
/// <returns></returns>
Task StartAsync();

}
2 changes: 2 additions & 0 deletions src/TagzApp.Common/InMemoryContentMessaging.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ public void StartProviders(IEnumerable<ISocialMediaProvider> providers, Cancella
var lastQueryTime = DateTimeOffset.UtcNow.AddHours(-1);
await provider.StartAsync();
while (!cancellationToken.IsCancellationRequested)
{
if (!_Actions.Any())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ public async Task<ProviderConfiguration> GetConfigurationSettingsAsync(string na
providerConfig.ConfigurationSettings!.Add(configSetting.Key, configSetting.Value ?? string.Empty);
}

return await Task.FromResult(providerConfig);
return providerConfig;
}
}
20 changes: 19 additions & 1 deletion src/TagzApp.Common/Models/ApplicationConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@ public class ApplicationConfiguration
private string _WaterfallHeaderMarkdown = "# Welcome to TagzApp";
private string _WaterfallHeaderCss = string.Empty;

private string _YouTubeChatConfig = "{}";

[Required, MaxLength(30)]
public string SiteName
{
get => _SiteName;
set
{
_SiteName = value;
ChangedSettings.RemoveAll(s => s.Id == SettingsKeys.SiteName);
ChangedSettings.Add(new Settings(SettingsKeys.SiteName, value));
}
}
Expand All @@ -30,6 +33,7 @@ public string WaterfallHeaderMarkdown
set
{
_WaterfallHeaderMarkdown = value;
ChangedSettings.RemoveAll(s => s.Id == SettingsKeys.WaterfallHeaderMarkdown);
ChangedSettings.Add(new Settings(SettingsKeys.WaterfallHeaderMarkdown, value));
}
}
Expand All @@ -41,18 +45,31 @@ public string WaterfallHeaderCss
set
{
_WaterfallHeaderCss = value;
ChangedSettings.RemoveAll(s => s.Id == SettingsKeys.WaterfallHeaderCss);
ChangedSettings.Add(new Settings(SettingsKeys.WaterfallHeaderCss, value));
}
}

public string YouTubeChatConfiguration
{
get { return _YouTubeChatConfig; }
set
{
_YouTubeChatConfig = value;
ChangedSettings.RemoveAll(s => s.Id == SettingsKeys.YouTubeChatConfiguration);
ChangedSettings.Add(new Settings(SettingsKeys.YouTubeChatConfiguration, value));
}
}

public static implicit operator Dictionary<string, string?>(ApplicationConfiguration config)
{

return new Dictionary<string, string?>
{
{ SettingsKeys.SiteName, config.SiteName },
{ SettingsKeys.WaterfallHeaderMarkdown, config.WaterfallHeaderMarkdown },
{ SettingsKeys.WaterfallHeaderCss, config.WaterfallHeaderCss }
{ SettingsKeys.WaterfallHeaderCss, config.WaterfallHeaderCss },
{ SettingsKeys.YouTubeChatConfiguration, config.YouTubeChatConfiguration }
};

}
Expand All @@ -68,6 +85,7 @@ private class SettingsKeys
public const string SiteName = "ApplicationConfiguration:SiteName";
public const string WaterfallHeaderMarkdown = "ApplicationConfiguration:WaterfallHeaderMarkdown";
public const string WaterfallHeaderCss = "ApplicationConfiguration:WaterfallHeaderCss";
public const string YouTubeChatConfiguration = "ApplicationConfiguration:YouTubeChatConfiguration";

}

Expand Down
6 changes: 1 addition & 5 deletions src/TagzApp.Common/Models/ProviderConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@ public class ProviderConfiguration
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public Dictionary<string, string>? ConfigurationSettings { get; set; }
public Dictionary<string, string>? ConfigurationSettings { get; set; } = new(StringComparer.OrdinalIgnoreCase);
public bool Activated { get; set; }

public ProviderConfiguration()
{
ConfigurationSettings = new Dictionary<string, string>();
}
}
6 changes: 5 additions & 1 deletion src/TagzApp.Communication/BaseProviderManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,15 @@ private async Task ConfigureProviders(IEnumerable<IConfigureProvider> configurat

foreach (var provider in configurationProviders)
{
if (provider is INeedConfiguration)
{
((INeedConfiguration)provider).SetConfiguration(_Configuration);
}
await provider.RegisterServices(_Services);
}

_Services.AddPolicies(_Configuration);

_Services.AddSingleton<IConfiguration>(_Configuration);
var sp = _Services.BuildServiceProvider();
socialMediaProviders.AddRange(sp.GetServices<ISocialMediaProvider>());
Providers = socialMediaProviders;
Expand Down
5 changes: 5 additions & 0 deletions src/TagzApp.Providers.Blazot/BlazotProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,9 @@ public async Task<IEnumerable<Content>> GetContentForHashtag(Hashtag tag, DateTi

return _ContentConverter.ConvertToContent(transmissions, tag);
}

public Task StartAsync()
{
return Task.CompletedTask;
}
}
191 changes: 98 additions & 93 deletions src/TagzApp.Providers.Mastodon/MastodonProvider.cs

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions src/TagzApp.Providers.TwitchChat/ChatClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,12 @@ internal static List<Emote> IdentifyEmotes(string msg)
foreach (var emote in emotesRaw)
{
var parts = emote.Split(":");
var positions = parts[1].Split("-");
emotes.Add(new Emote(int.Parse(positions[0]), int.Parse(positions[1]) - int.Parse(positions[0]) + 1, $"https://static-cdn.jtvnw.net/emoticons/v2/{parts[0]}/static/light/2.0"));
var entries = parts[1].Split(",");
foreach (var entry in entries)
{
var positions = entry.Split("-");
emotes.Add(new Emote(int.Parse(positions[0]), int.Parse(positions[1]) - int.Parse(positions[0]) + 1, $"https://static-cdn.jtvnw.net/emoticons/v2/{parts[0]}/static/light/2.0"));
}
}
}

Expand Down
7 changes: 6 additions & 1 deletion src/TagzApp.Providers.TwitchChat/TwitchChatProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public TwitchChatProvider(TwitchChatConfiguration settings, ILogger<TwitchChatPr
_Settings = settings;
_Logger = logger;
_ProfileRepository = new TwitchProfileRepository(_Settings.ClientId, _Settings.ClientSecret, clientFactory.CreateClient("TwitchProfile"));
ListenForMessages();
}

internal TwitchChatProvider(IOptions<TwitchChatConfiguration> settings, ILogger<TwitchChatProvider> logger, IChatClient chatClient)
Expand Down Expand Up @@ -122,4 +121,10 @@ public void Dispose()
Dispose(disposing: true);
GC.SuppressFinalize(this);
}

public Task StartAsync()
{
ListenForMessages();
return Task.CompletedTask;
}
}
Loading

0 comments on commit bed15bb

Please sign in to comment.