static void Main(string[] args) { var url = "https://interface.meiriyiwen.com/article/random"; string json = HttpHelper.SendPost(url, new Dictionary <string, string>(), "get"); JObject obj = JObject.Parse(json); using (ArticleDbContext db = new ArticleDbContext("Server=.;Database=Reading;User ID=sa;Password=123456")) { var title = (string)obj["data"]["title"]; var author = (string)obj["data"]["author"]; //表中是否存在此条数据 bool exist = db.Articles.Any(a => a.Title == title && a.Author == author); if (!exist) { db.Articles.Add(new Articles() { Title = title, Author = author, Details = (string)obj["data"]["content"], Summary = (string)obj["data"]["digest"], Category = "阅读", IssueTime = DateTime.Now, UpdateTime = DateTime.Now }); db.SaveChanges(); } } }
public static BaseEntity Update(BaseEntity entity) { using (var context = new ArticleDbContext()) { context.Set <BaseEntity>().Update(entity); context.SaveChanges(); return(entity); } }
public IActionResult Update(Article article) { var articleEntity = _articleDbContext.Articles.FirstOrDefault(x => x.Id == article.Id); if (articleEntity != null) { articleEntity.Title = article.Title; articleEntity.Description = article.Description; articleEntity.UpdatedAt = DateTime.Now; articleEntity.Phone = article.Phone; articleEntity.Image = article.Image; _articleDbContext.Articles.Update(articleEntity); _articleDbContext.SaveChanges(); return(NoContent()); } return(BadRequest()); }
public IActionResult AddArticle(ArticleViewModel viewModel) { if (!ModelState.IsValid) { ViewBag.Action = "AddArticle"; return(View("Editor", viewModel)); } Article article = new Article() { ArticleCode = Guid.NewGuid().ToString(), User = Request.Cookies["user"], Title = viewModel.Title, CoverUrl = viewModel.CoverUrl, Overview = viewModel.Overview, Content = viewModel.Content, Like = 0, Date = DateTime.Now.ToString() }; articleDbContext.Articles.Add(article); articleDbContext.SaveChanges(); // 移除缓存 memoryCache.Remove(Request.Cookies["user"]); if (Request.Cookies["user"] == "Female") { notifyService.PushNotify(configuration.GetValue <string>("MaleSckey"), "EachOther", "你收到了一条新消息,访问 EachOther 查看"); } if (Request.Cookies["user"] == "Male") { notifyService.PushNotify(configuration.GetValue <string>("FemaleSckey"), "EachOther", "你收到了一条新消息,访问 EachOther 查看"); } return(RedirectToAction("Index", "Article")); }
public IActionResult Detail(CommentViewModel viewModel) { Article article = articleDbContext.Articles .Include(i => i.Category) .Include(i => i.Comments) .Include(i => i.ArticleTags) .ThenInclude(i => i.Tag) .SingleOrDefault(i => i.ArticleCode == viewModel.ArticleCode); ViewBag.PageTitle = article.Title; DetailViewModel detailViewModel = new DetailViewModel() { Article = article, CommentViewModel = viewModel }; if (ModelState.IsValid) { string str = HttpContext.Session.GetString("VerificationCode"); if (str == viewModel.VerificationCode.ToLower()) { article.Comments.Add(new Comment() { Time = DateTime.Now, Detail = viewModel.Detail }); articleDbContext.SaveChanges(); //评论通知 notifyService.PushNotify("New Commit", viewModel.Detail); detailViewModel.CommentViewModel = new CommentViewModel(); ViewBag.Warning = "评论成功"; return(View(detailViewModel)); } else { ViewBag.Warning = "验证码错误"; return(View(detailViewModel)); } } ViewBag.Warning = "请完善评论"; return(View(detailViewModel)); }
public IActionResult Detail(string articleCode, string detail) { if (!ModelState.IsValid) { return(RedirectToAction("Index")); } Article article = articleDbContext.Articles .Single(i => i.ArticleCode == articleCode); string user = string.Empty; if (Request.Cookies["user"] == "Female") { user = "******"; } if (Request.Cookies["user"] == "Male") { user = "******"; } article.Comments.Add(new Comment() { User = user, Content = detail, Date = DateTime.Now }); articleDbContext.SaveChanges(); string msg = $"你的留言《{article.Title}》收到了新评论:{detail}"; if (Request.Cookies["user"] == "Female") { notifyService.PushNotify(configuration.GetValue <string>("MaleSckey"), "EachOther", msg); } if (Request.Cookies["user"] == "Male") { notifyService.PushNotify(configuration.GetValue <string>("FemaleSckey"), "EachOther", msg); } return(RedirectToAction("Detail", "Article", new { id = articleCode })); }
private async Task DoSearchPrivate(string searchFor, string country = "us") { var dateFrom = DateTime.Now.AddDays(-25).ToString("yyyy-MM-dd"); var url = "https://newsapi.org/v2/top-headlines?" + "q=" + searchFor + "&from=" + dateFrom + "&sortBy=popularity&" + "country=" + country + "&apiKey=691c99d17ab64640a1113e289427717d"; var request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.Add("Accept", "application/vnd.github.v3+json"); request.Headers.Add("User-Agent", "HttpClientFactory-Sample"); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); var newsApiResult = JsonConvert.DeserializeObject <NewsApiResult>(responseString); _articleDbContext.AddRange(newsApiResult.Articles); _articleDbContext.SaveChanges(); this.Articles = newsApiResult.Articles; zeroRecordsMessage = this.Articles.Count == 0 ? "No records returned, refine your search." : ""; } else { _logger.LogError("Data fetch unsuccesful."); } }
private static void SeedData(ArticleDbContext dbContext) { dbContext.Articles.AddRange(new List <Article> { new Article { ArticleId = 1, Author = "Per Runeson, Martin Höst", Title = "Guidelines for conducting and reporting case study research in software engineering", Journal = "Empirical Software Engineering", Year = 2008, Volume = 14, JournalIssue = 2, Pages = "131-164", Doi = "10.1007/s10664-008-9102-8" }, new Article { ArticleId = 2, Author = "Mauricio Aniche, Marco Gerosa", Title = "Most Common Mistakes in Test-Driven Development Practice: Results from an Online Survey with Developers", Journal = "ieeexplore.ieee.org", Year = 2010, Pages = "469-478", Doi = "10.1109/ICSTW.2010.16" } }); dbContext.Methods.AddRange( new SoftwareEngineeringMethod { Id = 1, ArticleId = 1, Method = "TDD" }, new SoftwareEngineeringMethod { Id = 2, ArticleId = 1, Method = "Continuous Integration" }, new SoftwareEngineeringMethod { Id = 3, ArticleId = 2, Method = "TDD" } ); dbContext.Methodologies.AddRange( new SoftwareEngineeringMethodology { Id = 1, ArticleId = 1, Methodology = "Agile" }, new SoftwareEngineeringMethodology { Id = 2, ArticleId = 1, Methodology = "XP" }, new SoftwareEngineeringMethodology { Id = 3, ArticleId = 2, Methodology = "Agile" } ); dbContext.UserRatings.AddRange( new UserRating { Id = 1, ArticleId = 1, Rating = 3 }, new UserRating { Id = 2, ArticleId = 1, Rating = 2 }, new UserRating { Id = 3, ArticleId = 1, Rating = 5 }, new UserRating { Id = 4, ArticleId = 1, Rating = 1 } ); dbContext.SaveChanges(); }
public async Task <IActionResult> Upload(ArticleViewModel articleViewModel) { ViewBag.PageTitle = "Upload"; if (!ModelState.IsValid) { ViewBag.Action = "Upload"; return(View("Editor", articleViewModel)); } List <ArticleTag> articleTags = new(); new List <string>(articleViewModel.TagStr.Split("#").Distinct()).ForEach((i) => { Tag tag = articleDbContext.Tags.SingleOrDefault(tag => tag.TagName == i); if (tag == null) { articleTags.Add(new ArticleTag() { Tag = new Tag() { TagName = i } }); } else { articleTags.Add(new ArticleTag() { TagId = tag.Id }); } }); Category category = await articleDbContext.Categories .SingleOrDefaultAsync(i => i.CategoriesName == articleViewModel.CategoryName); if (category == null) { category = new Category() { CategoriesName = articleViewModel.CategoryName }; } DateTime time = DateTime.Now; Year year = await articleDbContext.Years.SingleOrDefaultAsync(i => i.Value == time.Year); if (year == null) { year = new Year() { Value = time.Year }; } Month month = await articleDbContext.Months.SingleOrDefaultAsync(i => i.Value == time.Month && i.Year.Value == time.Year); if (month == null) { month = new Month() { Value = time.Month, Year = year }; } articleDbContext.Articles.Add(new Article() { ArticleCode = Guid.NewGuid(), Title = articleViewModel.Title, Time = time, Month = month, Category = category, ArticleTags = articleTags, Overview = articleViewModel.Overview, Content = articleViewModel.Content }); articleDbContext.SaveChanges(); //移除缓存 memoryCache.Remove("tempArticle"); return(RedirectToAction("Index")); }
public async Task <IActionResult> Detail(CommentViewModel viewModel) { Article article = await articleDbContext.Articles .Include(i => i.Category) .Include(i => i.Comments) .Include(i => i.ArticleTags) .ThenInclude(i => i.Tag) .SingleOrDefaultAsync(i => i.ArticleCode == viewModel.ArticleCode); if (article == null) { return(RedirectToAction("Index")); } ViewBag.PageTitle = article.Title; DetailViewModel detailViewModel = new() { Article = article, CommentViewModel = viewModel }; if (!ModelState.IsValid) { ViewBag.Warning = new { Style = "alert alert-danger", Content = "Please refine your Comment." }; return(View(detailViewModel)); } string str = HttpContext.Session.GetString("VerificationCode"); if (str != viewModel.VerificationCode.ToLower()) { ViewBag.Warning = new { Style = "alert alert-danger", Content = "The verification code is wrong." }; return(View(detailViewModel)); } article.Comments.Add(new Comment() { Time = DateTime.Now, Detail = viewModel.Detail }); articleDbContext.SaveChanges(); //评论通知 notifyService.PushNotify("[ New Comment ]", $"\n\n\nBlog: {article.Title}\n\n\nDetail: {viewModel.Detail}"); detailViewModel.CommentViewModel = new CommentViewModel(); ViewBag.Warning = new { Style = "alert alert-success", Content = "Thank you for your Comment." }; return(View(detailViewModel)); } }
static void Main(string[] args) { Console.WriteLine("Getting url"); var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); ArticleDbContext db = new ArticleDbContext(); //var existArt = db.Articles.Where(a => a.Link.Equals(message)); string existArt = null; if (existArt == null) { Console.WriteLine("Creating article"); try { var doc = new HtmlWeb().Load(message); var listTitle = doc.DocumentNode.SelectNodes("//h1[contains(@class, 'title-detail')]"); var title = ""; if (listTitle == null) { return; } Console.WriteLine(listTitle.First().InnerText); title = listTitle.First().InnerText; var images = doc.DocumentNode.Descendants("img") .Select(a => a.GetAttributeValue("data-src", null)) .Where(u => !String.IsNullOrEmpty(u)); var img = ""; if (images == null) { return; } img = images.First(); var listContent = doc.DocumentNode.SelectNodes("//p[contains(@class, 'Normal')]"); if (listContent == null) { return; } Console.WriteLine(listContent.First().InnerText); StringBuilder content = new StringBuilder(); foreach (var item in listContent) { content.AppendLine(item.InnerText); } Console.WriteLine(content); // Create demo: Create a article instance and save it to the database Article article = new Article { Link = message, Title = title, Images = img, Content = content.ToString() }; db.Articles.Add(article); db.SaveChanges(); Console.WriteLine("\nCreated article: "); } catch (Exception e) { Console.WriteLine(e.Message); } } else { Console.WriteLine(message + "\nExisted"); } }; channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } }