public async Task<bool> PushAnimeDetailsToMal(IAnimeDetailsJson details, string username, string password, bool canCache = true)
        {
            var useDetails = _jsonMapper.ConvertJsonAnimeDetailsToAnimeDetails(details);

            bool result;
            Log.Information("Received request to update {AnimeId} for {username}", details.AnimeId, username);
            var userlist = await _animeListRetriever.GetAnimeList(username);
            var item = userlist.Anime.FirstOrDefault(t => t.SeriesId == details.AnimeId);
            //The item doesn't exists - Use the add new method
            if (item == null)
            {
                result = await UpdateAnimeDetails(useDetails, username, password, canCache);
                Log.Information("Added {AnimeId} for {username}", details.AnimeId, username);
            }
            else
            {
                result = await UpdateAnimeDetails(useDetails, username, password, canCache, true);
                if (result)
                {
                    Log.Information("Updated {AnimeId} for {username}", details.AnimeId, username);
                }
                else
                {
                    Log.Warning("Update of {AnimeId} for {username} failed", details.AnimeId, username);
                }
            }
            return result;
        }
        public async Task <bool> PushAnimeDetailsToMal(IAnimeDetailsJson details, string username, string password, bool canCache = true)
        {
            var useDetails = _jsonMapper.ConvertJsonAnimeDetailsToAnimeDetails(details);

            bool result;

            Log.Information("Received request to update {AnimeId} for {username}", details.AnimeId, username);
            var userlist = await _animeListRetriever.GetAnimeList(username);

            var item = userlist.Anime.FirstOrDefault(t => t.SeriesId == details.AnimeId);

            //The item doesn't exists - Use the add new method
            if (item == null)
            {
                result = await UpdateAnimeDetails(useDetails, username, password, canCache);

                Log.Information("Added {AnimeId} for {username}", details.AnimeId, username);
            }
            else
            {
                result = await UpdateAnimeDetails(useDetails, username, password, canCache, true);

                if (result)
                {
                    Log.Information("Updated {AnimeId} for {username}", details.AnimeId, username);
                }
                else
                {
                    Log.Warning("Update of {AnimeId} for {username} failed", details.AnimeId, username);
                }
            }
            return(result);
        }
        public IAnimeDetails ConvertJsonAnimeDetailsToAnimeDetails(IAnimeDetailsJson jsonDetails)
        {
            var retAnime = _factory.CreateAnimeDetails();

            _mappingEngine.Map(jsonDetails, retAnime);

            return(retAnime);
        }
        public IAnimeDetails ConvertJsonAnimeDetailsToAnimeDetails(IAnimeDetailsJson jsonDetails)
        {
            var retAnime = _factory.CreateAnimeDetails();
            _mappingEngine.Map(jsonDetails, retAnime);

            return retAnime;
        }