/// <summary> /// Load the cached data /// </summary> /// <returns></returns> public TvdbData LoadUserDataFromCache() { List <TvdbMirror> mirrors = LoadMirrorListFromCache(); List <TvdbLanguage> languages = LoadLanguageListFromCache(); DateTime lastUpdated = LoadLastUpdatedFromCache(); TvdbData data = new TvdbData(languages, mirrors); data.LastUpdated = lastUpdated; return(data); }
/// <summary> /// Constructor for a tvdb class /// </summary> /// <param name="_cacheProvider">The cache provider used to store the information</param> /// <param name="_apiKey">Api key to use for this project</param> public Tvdb(ICacheProvider _cacheProvider, String _apiKey) { m_apiKey = _apiKey; //store api key m_cacheProvider = _cacheProvider; //store given cache provider m_loadedData = new TvdbData(); m_loadedData.Mirrors = new List<TvdbMirror>(); m_loadedData.SeriesList = new List<TvdbSeries>(); m_loadedData.LanguageList = new List<TvdbLanguage>(); TvdbLinks.ActiveMirror = new TvdbMirror(0, new Uri(TvdbLinks.BASE_SERVER), 7); m_downloader = new TvdbDownloader(m_apiKey); }
/// <summary> /// Load the cached data /// </summary> /// <returns>TvdbData object</returns> public TvdbData LoadUserDataFromCache() { List <TvdbLanguage> languages = LoadLanguageListFromCache(); DateTime lastUpdated = LoadLastUpdatedFromCache(); TvdbData data = new TvdbData(languages) { LastUpdated = lastUpdated }; return(data); }
/// <summary> /// Saves cache settings /// </summary> /// <param name="_content">settings</param> public void SaveToCache(TvdbData _content) { if (_content != null) { SaveToCache(_content.LanguageList); //store additional information //- time of last update //- more to come (eventually) XElement xml = new XElement("Data"); xml.Add(new XElement("LastUpdated", Util.DotNetToUnix(_content.LastUpdated))); String data = xml.ToString(); File.WriteAllText(m_rootFolder + Path.DirectorySeparatorChar + "data.xml", data); } }
/// <summary> /// Loads the settings data from cache /// </summary> /// <returns>The loaded TvdbData object</returns> public TvdbData LoadUserDataFromCache() { String fName = _rootFolder + Path.DirectorySeparatorChar + "data.xml"; _dataLock.EnterReadLock(); try { if (File.Exists(fName)) { String xmlData = File.ReadAllText(fName); XDocument xml = XDocument.Parse(xmlData); var info = from dataNode in xml.Descendants("Data") select new { lu = dataNode.Element("LastUpdated").Value }; if (info.Count() == 1) { TvdbData data = new TvdbData(); DateTime lastUpdated = new DateTime(); try { lastUpdated = Util.UnixToDotNet(info.First().lu); } catch (FormatException ex) { Log.Warn("Couldn't parse date of last update", ex); } data.LastUpdated = lastUpdated; data.LanguageList = LoadLanguageListFromCache(); //if (data.SeriesList == null) data.SeriesList = new List<TvdbSeries>(); return(data); } } } finally { _dataLock.ExitReadLock(); } return(null); }
/// <summary> /// Saves cache settings /// </summary> /// <param name="content">settings</param> public void SaveToCache(TvdbData content) { if (content == null) { return; } SaveToCache(content.LanguageList); _dataLock.EnterWriteLock(); try { //store additional information //- time of last update //- more to come (eventually) XElement xml = new XElement("Data"); xml.Add(new XElement("LastUpdated", Util.DotNetToUnix(content.LastUpdated))); String data = xml.ToString(); File.WriteAllText(_rootFolder + Path.DirectorySeparatorChar + "data.xml", data); } finally { _dataLock.ExitWriteLock(); } }
/// <summary> /// Saves cache settings /// </summary> /// <param name="_content">settings</param> public void SaveToCache(TvdbData _content) { SaveToCache(_content.LanguageList); SaveToCache(_content.LastUpdated); }
/// <summary> /// Saves cache settings /// </summary> /// <param name="_content">settings</param> public void SaveToCache(TvdbData _content) { SaveToCache(_content.LanguageList); SaveToCache(_content.Mirrors); SaveToCache(_content.LastUpdated); }
/// <summary> /// Load the cached data /// </summary> /// <returns></returns> public TvdbData LoadUserDataFromCache() { List<TvdbMirror> mirrors = LoadMirrorListFromCache(); List<TvdbLanguage> languages = LoadLanguageListFromCache(); DateTime lastUpdated = LoadLastUpdatedFromCache(); TvdbData data = new TvdbData(languages, mirrors); data.LastUpdated = lastUpdated; return data; }
/// <summary> /// Initialises the cache, should do the following things /// - initialise connections used for this cache provider (db connections, network shares,...) /// - create folder structure / db tables / ... if they are not created already /// - if this is the first time the cache has been initialised (built), mark last_updated with the /// current date /// </summary> /// <returns></returns> public TvdbData InitCache() { try { if (!Directory.Exists(m_rootFolder)) { Directory.CreateDirectory(m_rootFolder); } TvdbData data = LoadUserDataFromCache(); if (data == null) {//the cache has never been initialised before -> do it now data = new TvdbData(); data.LanguageList = new List<TvdbLanguage>(); data.Mirrors = new List<TvdbMirror>(); data.LastUpdated = DateTime.Now; SaveToCache(data); } m_initialised = true; return data; } catch (Exception ex) { Log.Error("Couldn't initialise cache: " + ex.ToString()); return null; } }
/// <summary> /// Loads the settings data from cache /// </summary> /// <returns>The loaded TvdbData object</returns> public TvdbData LoadUserDataFromCache() { String fName = m_rootFolder + Path.DirectorySeparatorChar + "data.xml"; if (File.Exists(fName)) { String xmlData = File.ReadAllText(fName); XDocument xml = XDocument.Parse(xmlData); var info = from dataNode in xml.Descendants("Data") select new { lu = dataNode.Element("LastUpdated").Value }; if (info.Count() == 1) { TvdbData data = new TvdbData(); DateTime lastUpdated = new DateTime(); try { lastUpdated = Util.UnixToDotNet(info.First().lu); } catch (FormatException ex) { Log.Warn("Couldn't parse date of last update", ex); } data.LastUpdated = lastUpdated; data.LanguageList = LoadLanguageListFromCache(); //if (data.SeriesList == null) data.SeriesList = new List<TvdbSeries>(); return data; } } return null; }