예제 #1
0
 public RssDownloaderTests()
 {
     _feedReader    = Substitute.For <IFeedReader>();
     _articleReader = Substitute.For <IArticleReader>();
     _repository    = Substitute.For <ISyndicationItemRepository>();
     _downloader    = new RssDownloader(_feedReader, _articleReader, _repository);
 }
예제 #2
0
        public DefaultModule(IArticleReader articleReader, IRouteLocatorProvider routeLocatorProvider, IViewLocationProvider viewLocationProvider)
        {
            _articleReader = articleReader;
            _routeLocatorProvider = routeLocatorProvider;
            _viewLocationProvider = viewLocationProvider;

            SetupDateRoutes();
            SetupStaticRoutes();
        }
예제 #3
0
 public Program(ProgramArguments args, ILogger logger, IArticleReader reader, IArticleRenderer renderer, IDeCorrespondentResources decorrespondent, ILastDatasource lastDs, IEReaderSender kindle, INotificationSender summarySender, int maxAantalArticles)
 {
     this.args = args;
     this.logger = logger;
     this.reader = reader;
     this.renderer = renderer;
     this.decorrespondent = decorrespondent;
     this.lastDs = lastDs;
     this.kindle = kindle;
     this.summarySender = summarySender;
     this.maxAantalArticles = maxAantalArticles;
 }
예제 #4
0
        public BlogModule(IArticleReader articleReader)
            : base("/blog")
        {
            Get["/{firstname}-{surname}"] = parameters =>
            {
                string author = string.Concat(parameters.firstname, " ", parameters.surname);
                PageModel.Meta.Articles = articleReader.ArticlesByAuthor(author).Where( b => b.ResourceName.Contains(@"blog") );
                PageModel.Meta.Author = author;

                return Negotiate
                       .WithView("_layout/bloggare")
                       .WithModel(PageModel)
                       .WithMediaRangeModel("application/json", PageModel);
            };
        }
예제 #5
0
        public HomeModule(IArticleReader articleReader)
        {
            Get["/"] = parameters =>
            {
                PageModel.Meta.HomeArticle = articleReader.ArticleById("home");
                PageModel.Meta.AboutArticle = articleReader.ArticleById("about");
                PageModel.Meta.CultureArticle = articleReader.ArticleById("culture");
                PageModel.Meta.CultureArticles = articleReader.ArticlesByCategory("culture").Where( a => a.ResourceName.Count( r => r == '/' ) > 0);
                PageModel.Meta.ServicesArticle = articleReader.ArticleById("services");
                PageModel.Meta.ServicesArticles = articleReader.ArticlesByCategory("services").Where( a => a.ResourceName.Count( r => r == '/' ) > 0);
                PageModel.Meta.SalesArticle = articleReader.ArticleById("sales");
                PageModel.Meta.SalesArticles = articleReader.ArticlesByCategory("sales").Where(a => a.ResourceName.Count(r => r == '/') > 0);
                PageModel.Meta.ContactArticle = articleReader.ArticleById("contact");
                PageModel.Meta.CrewArticle = articleReader.ArticleById("crew");
                PageModel.Meta.LatestNews = articleReader.ArticlesByCategory("nyheter").Take(2);

                return Negotiate
                       .WithView("_layout/home")
                       .WithModel(PageModel)
                       .WithMediaRangeModel("application/json", PageModel);
            };
        }
예제 #6
0
        public TagsModule(IArticleReader articleReader)
            : base("/api")
        {
            _articleReader = articleReader;

            Get["/tags"] = o =>
            {
                if (Request.Query.q.HasValue)
                {
                    string query = HttpUtility.UrlDecode(Request.Query.q);
                    var baked = query.Split(',');
                    var result = _articleReader.ArticlesByTags(baked);

                    if (!result.Any()) return HttpStatusCode.NotFound;

                    return Negotiate
                        .WithStatusCode(HttpStatusCode.OK)
                        .WithModel(result);
                }

                return _articleReader.TagCloud();
            };
        }
예제 #7
0
        public SearchModule(IArticleReader articleReader)
        {
            Get["/search"] = o =>
            {
                PageModel.Meta.QueryResult = default(IEnumerable<ArticleModel>);
                PageModel.Meta.Query = string.Empty;

                if (Request.Query.q.HasValue && !string.IsNullOrEmpty(Request.Query.q))
                {
                    string query = HttpUtility.UrlDecode(Request.Query.q);
                    PageModel.Meta.QueryResult = articleReader.ArticlesByFreeText(query);
                    PageModel.Meta.Query = query;
                }

                PageModel.Meta.TagCloud = articleReader.TagCloud();

                return Negotiate
                       .WithView("_layout/search")
                       .WithModel(PageModel)
                       .WithMediaRangeModel("application/json", PageModel);

            };
        }
예제 #8
0
 public RssDownloader(IFeedReader feedReader, IArticleReader articleReader, ISyndicationItemRepository itemRepository)
 {
     _feedReader     = feedReader;
     _articleReader  = articleReader;
     _itemRepository = itemRepository;
 }
예제 #9
0
 public ProgramWrapper(LogWrapper logger, WrappedResources resources, IArticleReader articleReader, IArticleRenderer articleRenderer, IDeCorrespondentResources reader, IEReaderSender sender, INotificationSender summarySender, DateTime? last)
 {
     this.logger = logger;
     wrappedResources = resources;
     LastDs = new MemoryLastDatasource(last);
     Program = new DeCorrespondent.Program(new DeCorrespondent.Program.ProgramArguments(true), logger, articleReader, articleRenderer, reader, LastDs, sender, summarySender, 20);
 }