コード例 #1
0
 public static async void MoChangeLogs(SoraMessage e, string type)
 {
     try
     {
         var articles = new ArticleList(type);
         if (articles.Articles.Count > 0)
         {
             await e.Reply(new StringBuilder()
                           .AppendLine(articles.Title)
                           .Append(string.Join(Environment.NewLine,
                                               articles.Articles.Select(x => x.Key + Environment.NewLine + "    " + x.Value).Take(5)))
                           .ToString());
         }
         else
         {
             await e.ReplyToOriginal("无效的类型 (仅支持 beta/release/snapshot)");
         }
     }
     catch (Exception ex)
     {
         await e.ReplyToOriginal(new StringBuilder()
                                 .AppendLine("获取文章列表时发生错误")
                                 .Append(ex.GetFormatString()));
     }
 }
コード例 #2
0
        public static async void FindMCSnapshot(SoraMessage e, string version)
        {
            var vm          = Regex.Match(version.Trim(), @"^(?<mainVersion>[^-]+)(?<sub>-(?<subType>pre|rc)(?<subNum>\d+))?$");
            var mainVersion = vm.Groups["mainVersion"].Value;
            var subType     = "snapshot";
            var subNum      = "";

            if (vm.Groups["sub"].Success && !string.IsNullOrWhiteSpace(vm.Groups["sub"].Value))
            {
                subType = vm.Groups["subType"].Value;
                subNum  = vm.Groups["subNum"].Value;
            }
            string changelog = null;
            var    articles  = new ArticleList("snapshot");
            var    article   = articles.Articles.Where(x => x.Key.Contains(mainVersion) &&
                                                       (subType == "snapshot" || ((subType == "pre" ? x.Key.Contains("PRE-RELEASE")
            : subType == "rc" && x.Key.Contains("Release Candidate")) && x.Key.Contains(subNum)))).FirstOrDefault();

            if (!string.IsNullOrEmpty(article.Key))
            {
                changelog = article.Value;
            }
            if (!string.IsNullOrEmpty(changelog))
            {
                MoChangeLogsFormat(e, changelog);
            }
            else
            {
                await e.Reply($"未能查找到 {version} 的更新日志");
            }
        }
コード例 #3
0
        private void btnViewArticle_Click(object sender, RoutedEventArgs e)
        {
            ArticleList window = new ArticleList();

            window.Show();
            this.Close();
        }
コード例 #4
0
        public ActionResult Deleted(int id)
        {
            ArticleList articleList = new ArticleList();

            articleList.Delete(id);
            return(RedirectToAction("Index", "Admin"));
        }
コード例 #5
0
        public async void GetPageAmount()
        {
            if (_isInDesignMode)
            {
                for (int i = 1; i <= 3; i++)
                {
                    RelayCommand <int> rc = new RelayCommand <int>((x) => { });
                    NewsPageNavCommandList.Add(new PageNavigationCommand(i.ToString(), rc));
                }
                return;
            }

            int pageAmount = 0;

            pageAmount = await Resources.APIWebTeam.NewsManagment.GetTotalPages();

            for (int i = 1; i <= pageAmount; i++)
            {
                RelayCommand <int> rc = new RelayCommand <int>((x) =>
                {
                    IsLoading = true;
                    RaisePropertyChanged("IsLoading");

                    ArticleList.Clear();
                    RaisePropertyChanged("ArticleList");
                    GetArticlesInPage(x);
                });
                NewsPageNavCommandList.Add(new PageNavigationCommand(i.ToString(), rc));
            }

            RaisePropertyChanged("NewsPageNavCommandList");
        }
コード例 #6
0
        public async Task Create_InvalidObject_ReturnsNull()
        {
            //Arrange
            var testArticles     = ArticleList.GetDefaultList();
            var articleDbSetMock = testArticles.AsQueryable().BuildMockDbSet();
            var dataContextMock  = new Mock <CommandDbContext>();

            dataContextMock.Setup(m => m.Articles).Returns(articleDbSetMock.Object);
            var articleRepository = new Mock <IArticleRepository>();
            var unitOfWorkMock    = new Mock <IUnitOfWork>();

            unitOfWorkMock.Setup(uow => uow.ArticleRepository).Returns(articleRepository.Object);

            var articleForCreation   = new ArticleForCreationDto();
            var createArticleCommand = new CreateArticleCommand(unitOfWorkMock.Object, _writeMapper);

            unitOfWorkMock.Setup(uow => uow.Commit()).Returns(Task.FromResult(false));

            //Act
            var result = await createArticleCommand.Execute(articleForCreation);

            //Assert
            articleRepository.Verify(r => r.Add(It.IsAny <Article>()), Times.Once);
            Assert.That(result, Is.Null);
        }
コード例 #7
0
        //文章列表
        public ActionResult List(string keyword1 = "", string keyword2 = "", int page = 1)
        {
            string menuKey = "";

            if (keyword2 == "")
            {
                menuKey = keyword1;
            }
            else
            {
                menuKey = keyword1 + "/" + keyword2;
            }
            MyResult   result = new MyResult();
            int        count  = Convert.ToInt32(ConfigurationManager.AppSettings["articleListCount"]);
            ArticleDAL dal    = new ArticleDAL();

            result = dal.getArticleList(menuKey, count, page);
            ArticleList <Article> model = new ArticleList <Article>();

            model.head = ConvertHelper.FillModel <Head>(((DataTable)result.obj).Rows[0]);
            Paging <Article> paging = new Paging <Article>();

            paging.list       = ConvertHelper.FillModelList <Article>((DataTable)result.obj2);
            paging.totalPages = Convert.ToInt32(result.obj3);
            model.paging      = paging;
            ViewBag.page      = page;
            ViewBag.menuKey   = menuKey;
            return(View(model));
        }
コード例 #8
0
        // GET: Articles/Details/5
        public ActionResult Details(int?id)
        {
            ViewModelResult model = new ViewModelResult();

            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                CommentList cmtList  = new CommentList();
                var         comments = cmtList.getListComment(id);
                ArticleList art      = new ArticleList();
                var         details  = art.getDetailArticle(id);
                model = new ViewModelResult {
                    articleDetail = details, listComment = comments
                };
            }

            catch (Exception e)
            {
                CommonUse.WriteLogError(e);
            }


            return(View(model));
        }
コード例 #9
0
        public void SetUp()
        {
            _articlesRepositoryMock = new Mock <IReadOnlyArticleRepository>();
            var articleParams = new ArticleParams();

            _testArticles = ArticleList.GetShortList().AsEnumerable();
        }
コード例 #10
0
ファイル: RSSHelper.cs プロジェクト: JuanKRuiz/jkRssReader
        /// <summary>
        /// Get Articles From Feed
        /// </summary>
        /// <param name="feedUrl"></param>
        /// <returns></returns>
        public static async Task <ArticleList> GetArticleListFromFeedAsync(string feedUrl)
        {
            var syncClient = new SyndicationClient();
            var lista      = new ArticleList();

            if (InternetConectivity)
            {
                var feed = await syncClient.RetrieveFeedAsync(new Uri(feedUrl));

                foreach (var art in feed.Items)
                {
                    var content = CreateContent(art.NodeValue);
                    lista.Add(new Article()
                    {
                        Title   = art.Title.Text,
                        Content = content,
                        Summary = CreateSummary(art.Summary, content),
                        ImgUri  = Find1stImageFromHtml(content)
                    });
                }
            }
            else
            {
                throw new Exception(INTERNET_REQUIRED);
            }

            return(lista);
        }
コード例 #11
0
 public void AddArticles(params Article[] article)
 {
     if (article != null)
     {
         ArticleList.AddRange(article);
     }
 }
        public static async Task <ArticleList> GetArticleListFromFeedAsync(string feedUrl)
        {
            var syncClient = new SyndicationClient();
            var lista      = new ArticleList();

            var feed = await syncClient.RetrieveFeedAsync(new Uri(feedUrl));

            foreach (var art in feed.Items)
            {
                var content = CreateContent(art.NodeValue);

                {
                    var newArticle = new Article()
                    {
                        Title   = art.Title.Text,
                        Content = content,
                        Summary = CreateSummary(art.Summary, content),
                        ImgUri  = Find1stImageFromHtml(content)
                    };
                    lista.Add(newArticle);
                }
            }

            return(lista);
        }
コード例 #13
0
ファイル: RSSHelper.cs プロジェクト: JuanKRuiz/jkRssReader
        /// <summary>
        /// Get Articles From Feed
        /// </summary>
        /// <param name="feedUrl"></param>
        /// <returns></returns>
        public static async Task<ArticleList> GetArticleListFromFeedAsync(string feedUrl)
        {
            var syncClient = new SyndicationClient();
            var lista = new ArticleList();

            if (InternetConectivity)
            {
                var feed = await syncClient.RetrieveFeedAsync(new Uri(feedUrl));
                foreach (var art in feed.Items)
                {
                    var content = CreateContent(art.NodeValue);
                    lista.Add(new Article()
                                {
                                    Title = art.Title.Text,
                                    Content = content,
                                    Summary = CreateSummary(art.Summary, content),
                                    ImgUri = Find1stImageFromHtml(content)
                                });
                }
            }
            else
            {
                throw new Exception(INTERNET_REQUIRED);
            }

            return lista;
        }
コード例 #14
0
        public IPagedList <Article> GetArticles(ArticleList page, ArticleSearchModel model)
        {
            var query = _session.QueryOver <Article>()
                        .Where(a => a.Parent == page);

            if (!String.IsNullOrEmpty(model.Category))
            {
                Tag tagAlias = null;
                query = query.JoinAlias(article => article.Tags, () => tagAlias).Where(() => tagAlias.Name.IsInsensitiveLike(model.Category, MatchMode.Exact));
            }

            if (model.Month.HasValue)
            {
                query =
                    query.Where(
                        article => article.PublishOn != null && article.PublishOn.Value.Month == model.Month);
            }
            if (model.Year.HasValue)
            {
                query =
                    query.Where(
                        article => article.PublishOn != null && article.PublishOn.Value.Year == model.Year);
            }

            return(query.OrderBy(x => x.PublishOn).Desc.Paged(model.Page, page.PageSize));
        }
コード例 #15
0
        //[Ignore("Problem with generic in setup")]
        public void Update_WithChangedEntity_PerformsAContextUpdate()
        {
            //Arrange
            var testArticles     = ArticleList.GetDefaultList();
            var articleDbSetMock = testArticles.AsQueryable().BuildMockDbSet();
            var dataContextMock  = new Mock <CommandDbContext>();

            dataContextMock.Setup(m => m.Articles).Returns(articleDbSetMock.Object);
            var articleRepository = new ArticleRepository(dataContextMock.Object);

            var updatedArticle = testArticles.First();

            updatedArticle.SetCode("1st article updated");
            var isContextUpdateCalled = false;

            //_dataContextMock.Setup(m => m.Set<Article>()).Returns(_articleDbSetMock.Object).Verifiable();
            dataContextMock.Setup(m => m.Update(It.IsAny <object>())).Callback(() => isContextUpdateCalled = true);

            //Act
            articleRepository.Update(updatedArticle);

            //Assert
            //_dataContextMock.Verify(m => m.Update(updatedArticle), Times.Once); //doesn't work with generic type
            Assert.That(isContextUpdateCalled, Is.True);
        }
コード例 #16
0
        public void Reload()
        {
            System.Threading.ThreadPool.QueueUserWorkItem(delegate
            {
                try
                {
                    ShowLoading(StringResources.captionInformation, StringResources.msgLoading);

                    var articleList = Factory.Resolve <IBaseDataDS>().SearchArticle(new ArticleSearchEntity()
                    {
                        SearchText = this.SearchText
                    });

                    var categoryList = Factory.Resolve <IBaseDataDS>().SearchCategories(new CategorySearchEntity()
                    {
                        SearchText = ""
                    });

                    HideLoading();

                    //display to UI
                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        ArticleList     = articleList;
                        SelectedArticle = ArticleList.FirstOrDefault();
                        CategoryList    = categoryList;
                    }));
                }
                catch (Exception ex)
                {
                    HideLoading();
                    ShowMessageBox(StringResources.captionError, ex.ToString(), MessageBoxButton.OK);
                }
            });
        }
コード例 #17
0
        public static string ArticleSearch(string ArticleTitle, int startIndex, int maximumRows, string sortExpressions)
        {
            ArticleCollection           ArticleListSearch = new ArticleCollection();
            Dictionary <string, object> dic = new Dictionary <string, object>();

            ArticleList = ArticleCollection.GetArticleBySearch(ArticleTitle);
            Guid subId = SessionHelper.GetSession(SessionKey.SubDomain) == string.Empty ? Guid.Empty : new Guid(SessionHelper.GetSession(SessionKey.SubDomain));

            if (subId == Guid.Empty)
            {
                ArticleListSearch = ArticleList;
            }
            else
            {
                PSCPortal.Engine.SubDomain subDomain = new PSCPortal.Engine.SubDomain {
                    Id = subId
                };
                PSCPortal.Engine.PageCollection listPage = subDomain.GetPagesBelongTo();
                foreach (var item in listPage)
                {
                    foreach (var article in ArticleList.Where(ar => ar.PageId == item.Id))
                    {
                        ArticleListSearch.Add(article);
                    }
                }
            }
            dic.Add("Data", ArticleListSearch.GetSegment(startIndex, maximumRows, sortExpressions));
            dic.Add("Count", ArticleListSearch.Count);
            System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
            return(js.Serialize(dic));
        }
コード例 #18
0
        public static void ArticleEditTopic(string id)
        {
            Guid    idArticle = new Guid(id);
            Article article   = ArticleList.Where(a => a.Id == idArticle).Single();

            article.UserAdd     = System.Web.HttpContext.Current.User.Identity.Name;
            PSCDialog.DataShare = new ArticleArgs(article, article.GetDescription(), article.GetContent(), true);
        }
コード例 #19
0
        public RssActionResult Show(ArticleList page)
        {
            var feed = _articlesRssService.GetSyndicationFeed(page);

            return(new RssActionResult {
                Feed = feed
            });
        }
コード例 #20
0
 public void SetUp()
 {
     _articlesRepositoryMock = new Mock <IReadOnlyArticleRepository>();
     _articleParams          = new ArticleParams();
     _testArticles           = ArticleList.GetDefaultList().AsEnumerable();
     _pagedListOfArticles    = new PagedList <Article>(_testArticles, _testArticles.Count(), 1, 10);
     _readMapper             = new Mapper(new MapperConfiguration(cfg => cfg.AddProfile <Helpers.AutoMapperProfiles>()));
 }
コード例 #21
0
 public void Setup()
 {
     _testArticles     = ArticleList.GetDefaultList();
     _articleDbSetMock = _testArticles.AsQueryable().BuildMockDbSet();
     _dataContextMock  = new Mock <CommandDbContext>();
     _dataContextMock.Setup(m => m.Articles).Returns(_articleDbSetMock.Object);
     _articleRepository = new ArticleRepository(_dataContextMock.Object);
     _unitOfWork        = new UnitOfWork(_dataContextMock.Object, _articleRepository, null);
 }
コード例 #22
0
ファイル: ArticleListTest.cs プロジェクト: rocketeerbkw/DNA
        public void ArticleListTestXmlTest()
        {
            ArticleList articlelist = new ArticleList();
            articlelist.Type = ArticleList.ArticleListType.NormalAndApproved;
            XmlDocument xml = Serializer.SerializeToXml(articlelist);

            Assert.IsNotNull(xml.SelectSingleNode("ARTICLELIST"));

        }
コード例 #23
0
        public static string GetArticleList(string topicId, int startIndex, int maximumRows, string sortExpressions)
        {
            Guid  idTopic = new Guid(topicId);
            Topic topic   = (Topic)TopicList.Search(o => ((Topic)o).Id == idTopic);

            ArticleList = ArticleCollection.GetArticleCollection(topic);
            System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
            return(js.Serialize(ArticleList.GetSegment(startIndex, maximumRows, sortExpressions)));
        }
コード例 #24
0
        public async Task <IActionResult> List([FromQuery] ArticleList request)
        {
            Paginated <ArticleListItemViewModel> list = await Mediator.Send(request with
            {
                UserId = RequestUserId,
            });

            return(Ok(list));
        }
コード例 #25
0
        public static void ArticleDelete(string[] arrId)
        {
            foreach (string id in arrId)
            {
                Guid idArticle = new Guid(id);

                ArticleList.RemoveDB(ArticleList.Where(a => a.Id == idArticle).Single());
                Libs.Ultility.DeleteArticleIndexing(idArticle);
            }
        }
コード例 #26
0
        public void Login(string Email, string Password)
        {
            Info("Please Wait: Prepare Login");
            ArticleList.Clear();

            Author.Email    = Email;
            Author.Password = Password;

            NavigateTo(Navigation.LoginCheck);
        }
コード例 #27
0
ファイル: Default.aspx.cs プロジェクト: wangzhe0828/LingHang
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         NoticeList.DataSource = new DAL.DNotice().GetFirstSix();
         NoticeList.DataBind();
         ArticleList.DataSource = new DAL.DArticle().GetFirstSeven();
         ArticleList.DataBind();
     }
 }
コード例 #28
0
        // GET: Admin
        public async Task <ActionResult> Index(ArticleFilter filter)
        {
            var articles = await db.GetArticles(filter.Year, filter.Title);

            var model = new ArticleList {
                Articles = articles, Filter = filter
            };

            return(View("Index", model));
        }
コード例 #29
0
        public ActionResult News(string symbol, DateTimeOffset from, DateTimeOffset to)
        {
            symbol = symbol.ToUpperInvariant();
            ArticleList articleList = repository.GetNewsArticles("company", symbol);

            if (articleList is not null && !articleList.IsStale(15))
            {
                IEnumerable <NewsArticle> ret = articleList.Articles.Where(a =>
                {
                    DateTimeOffset dto = DateTimeOffset.FromUnixTimeSeconds(a.DateTime);
                    return(dto >= from && dto <= to);
                });
                return(Ok(ret));
            }

            var fromStr    = from.ToString("yyyy-MM-dd");
            var toStr      = to.ToString("yyyy-MM-dd");
            var parameters =
                $"https://finnhub.io/api/v1/company-news?symbol={symbol}&from={fromStr}&to={toStr}";

            HttpResponseMessage response = finnhubClient.GetAsync(parameters).Result;

            if (!response.IsSuccessStatusCode)
            {
                return(BadRequest($"Status code: {response.StatusCode}"));
            }

            List <FinnhubArticle> articles =
                response.Content.ReadFromJsonAsync <List <FinnhubArticle> >(serializerOptions).Result;

            bool shouldAdd = articleList is null;

            articleList = new ArticleList
            {
                Category    = "company",
                Symbol      = symbol,
                Articles    = mapper.Map <List <NewsArticle> >(articles),
                LastUpdated = DateTimeOffset.UtcNow
            };

            if (shouldAdd)
            {
                repository.AddEntity(articleList);
            }

            repository.SaveAll();

            IEnumerable <NewsArticle> articlesRet = articleList.Articles.Where(a =>
            {
                DateTimeOffset dto = DateTimeOffset.FromUnixTimeSeconds(a.DateTime);
                return(dto >= from && dto <= to);
            });

            return(Ok(articlesRet));
        }
コード例 #30
0
        public async Task <Paginated <ArticleListItemViewModel> > Handle(ArticleList request, CancellationToken cancellationToken)
        {
            new ArticleListValidator().ValidateAndThrow(request);

            return(await DB.ArticleCollectionsOfUserOrPublic(request.UserId)
                   .Where(ac => !request.ArticleCollectionId.HasValue || ac.Id == request.ArticleCollectionId)
                   .SelectMany(ac => ac.Articles)
                   .SortBy(request.SortBy, request.UserId)
                   .ProjectTo <ArticleListItemViewModel>(Mapper.ConfigurationProvider, new { userId = request.UserId })
                   .ToPaginatedAsync(request.Page, 50, cancellationToken));
        }
コード例 #31
0
        public void DeleteArticleFromList(ArticleEntity newEntity)
        {
            ArticleEntity oldEntity = ArticleList.FirstOrDefault <ArticleEntity>(p => p.ArticleId == newEntity.ArticleId);

            if (oldEntity != null)
            {
                ArticleList.Remove(oldEntity);
            }

            ArticleList = new List <ArticleEntity>(_articleList);
        }
コード例 #32
0
        public static void ArticleSend(string id)
        {
            Guid    idArticle = new Guid(id);
            Article article   = ArticleList.Where(a => a.Id == idArticle).Single();
            Article model     = Article.GetArticleAlbum(idArticle);

            article.ArticleHangDate = article.GetArticleHang();
            article.AlbumPath       = model.AlbumPath;
            article.DocumentPath    = model.DocumentPath;
            PSCDialog.DataShare     = new ArticleArgs(article, article.GetDescription(), article.GetContent(), true);
        }
        public static async Task<ArticleList> GetArticleListFromFeedAsync(string feedUrl)
        {
            var syncClient = new SyndicationClient();
            var lista = new ArticleList();

            var feed = await syncClient.RetrieveFeedAsync(new Uri(feedUrl));
            foreach (var art in feed.Items)
            {
                var content = CreateContent(art.NodeValue);

                {
                    var newArticle = new Article() { Title = art.Title.Text,
                    Content = content,
                    Summary = CreateSummary(art.Summary, content),
                    ImgUri = Find1stImageFromHtml(content) };
                    lista.Add(newArticle);
                }
            }

            return lista;
        }
コード例 #34
0
ファイル: ArticleListTest.cs プロジェクト: rocketeerbkw/DNA
 /// <summary>
 /// Returns a test ArticleListTest
 /// </summary>
 /// <returns></returns>
 public static ArticleList CreateTestArticleListTest()
 {
     var articleList = new ArticleList()
     {
         Articles = new List<ArticleSummary> { ArticleSummaryTest.CreateArticleSummaryTest() }
     };
     return articleList;
 }
コード例 #35
0
ファイル: ArticleListTest.cs プロジェクト: rocketeerbkw/DNA
 public void GetCacheKeyTest()
 {
     var articleList = new ArticleList();
     string expected = string.Format("{0}|0|0|0|0|True|0|", typeof(ArticleList).AssemblyQualifiedName);
     string actual = articleList.GetCacheKey(0, 0, 0, 0, true, 0);
     Assert.AreEqual(expected, actual);
 }
コード例 #36
0
ファイル: ArticleListTest.cs プロジェクト: rocketeerbkw/DNA
        public void IsUpToDate_ArticleListTestOutOfDate_ReturnsCorrect()
        {
            // PREPARE THE TEST
            // setup the default mocks
            MockRepository mocks = new MockRepository();

            var target = new ArticleList()
            {
                Articles = new List<ArticleSummary> { ArticleSummaryTest.CreateArticleSummaryTest() }
            };

            var reader = mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.HasRows).Return(true);
            reader.Stub(x => x.Read()).Return(false);

            var creator = mocks.DynamicMock<IDnaDataReaderCreator>();
            mocks.ReplayAll();

            Assert.AreEqual(false, target.IsUpToDate(creator));
        }