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")));
 }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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"));
        }
Exemple #4
0
        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);
        }