コード例 #1
0
ファイル: RssProvider.cs プロジェクト: serguru/linksnews
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: NewsService.cs プロジェクト: serguru/linksnews
        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);
        }
コード例 #4
0
ファイル: RssProvider.cs プロジェクト: serguru/linksnews
 public RssProvider(NewsProviderDef providerDef, LinksContext db, UtilsService us)
 {
     this.db          = db;
     this.us          = us;
     this.providerDef = providerDef;
 }
コード例 #5
0
ファイル: NewsApiProvider.cs プロジェクト: serguru/linksnews
 public NewsApiProvider(NewsProviderDef providerDef, DataService ds, UtilsService us)
 {
     this.ds          = ds;
     this.us          = us;
     this.providerDef = providerDef;
 }