public AniListSource(ITitlePreferenceConfiguration titlePreferenceConfiguration,
                      IEnumerable <IEmbySourceDataLoader> embySourceDataLoaders, IAniListNameSelector aniListNameSelector)
 {
     this.titlePreferenceConfiguration = titlePreferenceConfiguration;
     this.embySourceDataLoaders        = embySourceDataLoaders;
     this.aniListNameSelector          = aniListNameSelector;
 }
 private static Option <PersonInfo> ToPersonInfo(IAniListNameSelector nameSelector,
                                                 TitleType preferredTitleType, string language, AniListStaffData aniListStaffData)
 {
     return(nameSelector.SelectName(aniListStaffData.Name, preferredTitleType, language)
            .Map(n => new PersonInfo
     {
         Name = n,
         Role = aniListStaffData.Role,
         ImageUrl = aniListStaffData.Image.Large
     }));
 }
        private static Option <PersonInfo> ToPersonInfo(IAniListNameSelector nameSelector,
                                                        TitleType preferredTitleType, string language, AniListCharacterData aniListCharacterData)
        {
            var voiceActor = aniListCharacterData.VoiceActors.Find(va =>
                                                                   string.Equals(va.Language, "JAPANESE", StringComparison.InvariantCultureIgnoreCase));

            var characterName  = nameSelector.SelectName(aniListCharacterData.Name, preferredTitleType, language);
            var voiceActorName = voiceActor.Bind(va => nameSelector.SelectName(va.Name, preferredTitleType, language));

            return(characterName.Bind(c => voiceActor.Bind(va => voiceActorName.Map(van => new PersonInfo
            {
                Name = van,
                Type = PersonType.Actor,
                Role = c,
                ImageUrl = va.Image.Large
            }))));
        }
 public AniListSourceMappingConfiguration(IAniListNameSelector nameSelector)
 {
     this.nameSelector = nameSelector;
 }