public IEnumerable <NewsSource> GetSources() { NewsProviderDef def = db .NewsProviderDefs .AsNoTracking() .Where(x => x.Id == providerDef.Id) .FirstOrDefault(); if (def == null) { return(null); } List <NewsSource> result = db .NewsSources .Where(x => x.NewsProviderId == providerDef.Id) .AsNoTracking() .ToList(); result .ForEach(x => { x.NewsProvider = def.Name; x.NewsSourceUrl = def.Website; }); return(result); }
public INewsProvider GetProvider(NewsProviderDef providerDef) { INewsProvider provider = null; if (us.StrsEqual(providerDef.Name, "newsapi.org")) { provider = new NewsApiProvider(providerDef, ds, us); return(provider); } provider = new RssProvider(providerDef, db, us); return(provider); }
public List <Link> GetArticles(long?newsProviderId, string newsSourceId) { if (us.Empty(newsSourceId) || !newsProviderId.HasValue) { return(null); } NewsProviderDef providerDef = ProviderDefs.FirstOrDefault(x => x.Id == newsProviderId.Value); if (providerDef == null) { return(null); } INewsProvider provider = factory.GetProvider(providerDef); if (provider == null) { return(null); } string key = op.Value.Cache.NewsSourceKey + newsProviderId.Value + newsSourceId; List <Link> result; if (cache.TryGetValue(key, out result)) { return(result); } result = provider.GetLinks(newsSourceId).ToList(); cache.Set(key, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(op.Value.Cache.NewsArticlesRefreshInterval))); return(result); }
public RssProvider(NewsProviderDef providerDef, LinksContext db, UtilsService us) { this.db = db; this.us = us; this.providerDef = providerDef; }
public NewsApiProvider(NewsProviderDef providerDef, DataService ds, UtilsService us) { this.ds = ds; this.us = us; this.providerDef = providerDef; }