public static XmlDocument GetAnimeXMLFromAPI(int animeID, ref string rawXML) { try { string uri = string.Format(AnimeURL, animeID); //APIUtils.WriteToLog("GetAnimeXMLFromAPI: " + uri); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(ServerSettings.Culture); DateTime start = DateTime.Now; string msg = string.Format(Resources.AniDB_GettingAnimeXML, animeID); ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); rawXML = APIUtils.DownloadWebPage(uri); // Putting this here for no chance of error. It is ALWAYS created or updated when AniDB is called! var update = RepoFactory.AniDB_AnimeUpdate.GetByAnimeID(animeID); if (update == null) { update = new AniDB_AnimeUpdate { AnimeID = animeID, UpdatedAt = DateTime.Now } } ; else { update.UpdatedAt = DateTime.Now; } RepoFactory.AniDB_AnimeUpdate.Save(update); TimeSpan ts = DateTime.Now - start; string content = rawXML; if (content.Length > 100) { content = content.Substring(0, 100); } msg = string.Format(Resources.AniDB_GotAnimeXML, animeID, ts.TotalMilliseconds, content); ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); //APIUtils.WriteToLog("GetAnimeXMLFromAPI result: " + rawXML); if (rawXML.Trim().Length == 0) { return(null); } XmlDocument docAnime = new XmlDocument(); docAnime.LoadXml(rawXML); return(docAnime); } catch (Exception ex) { logger.Error(ex, "Error in AniDBHTTPHelper.GetAnimeXMLFromAPI: {0}"); return(null); } }
public static XmlDocument GetAnimeXMLFromAPI(int animeID) { try { if (ShokoService.AnidbProcessor.IsHttpBanned) { logger.Info("GetAnimeXMLFromAPI: banned, not getting"); return(null); } ShokoService.LastAniDBMessage = DateTime.Now; ShokoService.LastAniDBHTTPMessage = DateTime.Now; var anime = RepoFactory.AniDB_AnimeUpdate.GetByAnimeID(animeID); DateTime?prevUpdate = anime?.UpdatedAt; string uri = string.Format(AnimeURL, animeID); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(ServerSettings.Instance.Culture); DateTime start = DateTime.Now; string msg = string.Format(Resources.AniDB_GettingAnimeXML, animeID) + "; prevUpdate: " + prevUpdate; ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); string rawXML = APIUtils.DownloadWebPage(uri); // Putting this here for no chance of error. It is ALWAYS created or updated when AniDB is called! if (anime == null) { anime = new AniDB_AnimeUpdate { AnimeID = animeID, UpdatedAt = DateTime.Now } } ; else { anime.UpdatedAt = DateTime.Now; } RepoFactory.AniDB_AnimeUpdate.Save(anime); TimeSpan ts = DateTime.Now - start; string content = rawXML; if (content.Length > 100) { content = content.Substring(0, 100); } msg = string.Format(Resources.AniDB_GotAnimeXML, animeID, ts.TotalMilliseconds, content); ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); XmlDocument docAnime = null; if (rawXML.Trim().Length > 0 && !CheckForBan(rawXML)) { APIUtils.WriteAnimeHTTPToFile(animeID, rawXML); docAnime = new XmlDocument(); docAnime.LoadXml(rawXML); } else { logger.Warn($"When downloading anime data for {animeID}, ban or no data was receved."); } return(docAnime); } catch (Exception ex) { logger.Error(ex, "Error in AniDBHTTPHelper.GetAnimeXMLFromAPI: {0}"); return(null); } }