Exemple #1
0
        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);
     }
 }
Exemple #3
0
        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"));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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 }));
        }
Exemple #7
0
        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.");
            }
        }
Exemple #8
0
        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"));
        }
Exemple #10
0
        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));
        }
    }
Exemple #11
0
        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();
                }
        }