mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-03-12 04:35:27 -07:00
* Abstract media servers content into interfaces * Media server entities into abstract classes * Abstract media server content repository * First pass at newsletter refactoring * Minor code clean up * Attempt at abstracting repositories (WIP) * Fixed cast issue * Corrected the other properties * A step towards newsletter refactoring * Clean up leftovers * Fix broken episodes db interaction * Save absolute URL for Plex content Let's be consistent with Emby and Jellyfin * Fix broken integration with Plex libraries * Fix error when multiple media servers configured * Fix newsletter being sent if no movies or episodes * Fix broken tests * Remove unneccesary logs * Allow for newsletter localization * Generate file in English * Fix unsubscribe text unlocalized by messy merge * Fix indentation Co-authored-by: tidusjar <tidusjar@gmail.com>
54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using Ombi.I18n.Resources;
|
|
|
|
namespace Ombi.Notifications.Templates
|
|
{
|
|
public class NewsletterTemplate : TemplateBase, INewsletterTemplate
|
|
{
|
|
public override string TemplateLocation
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(_templateLocation))
|
|
{
|
|
#if DEBUG
|
|
_templateLocation = Path.Combine(Directory.GetCurrentDirectory(), "bin", "Debug", "net6.0", "Templates", "NewsletterTemplate.html");
|
|
#else
|
|
_templateLocation = Path.Combine(Directory.GetCurrentDirectory(), "Templates", "NewsletterTemplate.html");
|
|
#endif
|
|
}
|
|
return _templateLocation;
|
|
}
|
|
}
|
|
|
|
private string _templateLocation;
|
|
|
|
private const string SubjectKey = "{@SUBJECT}";
|
|
private const string DateKey = "{@DATENOW}";
|
|
private const string Logo = "{@LOGO}";
|
|
private const string TableLocation = "{@RECENTLYADDED}";
|
|
private const string IntroText = "{@INTRO}";
|
|
private const string Unsubscribe = "{@UNSUBSCRIBE}";
|
|
private const string UnsubscribeText = "{@UNSUBSCRIBETEXT}";
|
|
private const string PoweredByText = "{@POWEREDBYTEXT}";
|
|
|
|
|
|
public string LoadTemplate(string subject, string intro, string tableHtml, string logo, string unsubscribeLink)
|
|
{
|
|
var sb = new StringBuilder(File.ReadAllText(TemplateLocation));
|
|
sb.Replace(SubjectKey, subject);
|
|
sb.Replace(TableLocation, tableHtml);
|
|
sb.Replace(IntroText, intro);
|
|
sb.Replace(DateKey, DateTime.Now.ToString("f"));
|
|
sb.Replace(Logo, string.IsNullOrEmpty(logo) ? OmbiLogo : logo);
|
|
sb.Replace(Unsubscribe, string.IsNullOrEmpty(unsubscribeLink) ? string.Empty : unsubscribeLink);
|
|
sb.Replace(UnsubscribeText, string.IsNullOrEmpty(unsubscribeLink) ? string.Empty : Texts.Unsubscribe);
|
|
sb.Replace(PoweredByText, Texts.PoweredBy);
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|