public Either <ProcessFailedResult, string> SelectTitle(AniListTitleData titleData, string metadataLanguage, ProcessResultContext resultContext) { return(this.aniListNameSelector .SelectTitle(titleData, this.titlePreferenceConfiguration.TitlePreference, metadataLanguage) .ToEither(resultContext.Failed("Failed to find a title"))); }
public void SelectTitle_LocalisedPreferred_JapaneseMetadataLanguage_ReturnsNative() { var titleData = new AniListTitleData("English", "Romaji", "Native"); var result = this.nameSelector.SelectTitle(titleData, TitleType.Localized, "ja"); result.IsSome.Should().BeTrue(); result.IfSome(r => r.Should().Be("Native")); }
public void SelectTitle_JapanesePreferred_ReturnsNative() { var titleData = new AniListTitleData("English", "Romaji", "Native"); var result = this.nameSelector.SelectTitle(titleData, TitleType.Japanese, "en"); result.IsSome.Should().BeTrue(); result.IfSome(r => r.Should().Be("Native")); }
public void SelectTitle_JapanesePreferred_NoNativeOrRomaji_ReturnsEnglish(string emptyValue) { var titleData = new AniListTitleData("English", emptyValue, emptyValue); var result = this.nameSelector.SelectTitle(titleData, TitleType.Japanese, "en"); result.IsSome.Should().BeTrue(); result.IfSome(r => r.Should().Be("English")); }
public Option <string> SelectTitle(AniListTitleData titleData, TitleType preferredTitleType, string metadataLanguage) { _log.Debug( $"Selecting title from {titleData} available, preference for {preferredTitleType}, metadata language '{metadataLanguage}'"); var preferredTitle = FindPreferredTitle(titleData, preferredTitleType, metadataLanguage); preferredTitle.IfSome(t => _log.Debug($"Found title '{t}'")); if (preferredTitle.IsNone) { _log.Debug("No title found"); } return(preferredTitle); }
private Option <string> FindPreferredTitle(AniListTitleData titleData, TitleType preferredTitleType, string metadataLanguage) { if (preferredTitleType == TitleType.Localized && "ja".Equals(metadataLanguage, StringComparison.InvariantCultureIgnoreCase)) { preferredTitleType = TitleType.Japanese; } switch (preferredTitleType) { case TitleType.Localized: return(SelectTitle(titleData, new[] { TitleType.Localized, TitleType.JapaneseRomaji, TitleType.Japanese })); case TitleType.Japanese: return(SelectTitle(titleData, new[] { TitleType.Japanese, TitleType.JapaneseRomaji, TitleType.Localized })); case TitleType.JapaneseRomaji: return(SelectTitle(titleData, new[] { TitleType.JapaneseRomaji, TitleType.Localized, TitleType.Japanese })); } return(Option <string> .None); }