public IHttpActionResult PutNew(int id, OneNews @new) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != @new.Id) { return(BadRequest()); } db.Entry(@new).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!NewExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public async Task <Response> DoAsync(Request request) { var singleNews = new OneNews { Title = request.Title, Body = request.Body, Created = request.Created, Description = request.Description, Tags = request.Tags, Category = request.Category, Image = await _fileManager.SaveImageAsync(request.Image) }; if (await _newsManager.CreateOneNews(singleNews) <= 0) { throw new Exception("Failed to add post!"); } return(new Response { Id = singleNews.Id, Title = singleNews.Title, Body = singleNews.Body, Image = singleNews.Image, Created = singleNews.Created, Description = singleNews.Description, Tags = singleNews.Tags, Category = singleNews.Category, }); }
public async Task <OneNewsVM> GetOneNews(OneNews oneNews, IMapper mapper) { HttpClient httpClient = new HttpClient(); HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(oneNews.Url); string source = await httpResponseMessage.Content.ReadAsStringAsync(); IConfiguration config = Configuration.Default; IBrowsingContext context = BrowsingContext.New(config); IDocument document = await context.OpenAsync(req => req.Content(source)); IElement[] textItems = document.All.Where(m => (m.LocalName == "p" && m.ClassList.Contains("box-paragraph__text")) || (m.LocalName == "h2" && m.ClassList.Contains("box-paragraph__subtitle")) || (m.LocalName == "b" && m.ClassList.Contains("box-paragraph__text"))).ToArray(); OneNewsVM oneNewsViewModel = mapper.Map <OneNewsVM>(oneNews); foreach (IElement item in textItems) { HtmlElement htmlElement = new HtmlElement() { Name = item.LocalName, Text = item.Text() }; oneNewsViewModel.HtmlElements.Add(htmlElement); } return(oneNewsViewModel); }
public async Task <IActionResult> SaveOneNews(OneNews oneNews) { if (!User.Identity.IsAuthenticated) { return(BadRequest(new { Message = "Authenticated!" })); } if (ModelState.IsValid) { User user = await _context.Users.FirstOrDefaultAsync(u => u.Email == User.Identity.Name); SavedNews savedNews = _mapper.Map <SavedNews>(oneNews); savedNews.User = user; savedNews.UserId = user.Id; SavedNews exsistedSavedNews = await _context.SavedNews.FirstOrDefaultAsync(n => n.Title == oneNews.Title && n.UserId == user.Id); if (exsistedSavedNews == null) { await _context.SavedNews.AddAsync(savedNews); await _context.SaveChangesAsync(); return(Ok(new { Message = "Saved!" })); } else { return(BadRequest(new { Message = "Exists!" })); } } return(BadRequest(new { Message = "Error!" })); }
public IHttpActionResult GetNew(int id) { OneNews @new = db.News.Find(id); if (@new == null) { return(NotFound()); } return(Ok(@new)); }
public IHttpActionResult PostNew(OneNews @new) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.News.Add(@new); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = @new.Id }, @new)); }
public IHttpActionResult DeleteNew(int id) { OneNews @new = db.News.Find(id); if (@new == null) { return(NotFound()); } db.News.Remove(@new); db.SaveChanges(); return(Ok(@new)); }
public async static Task <OneNews> Parse(string htmlUrl) { OneNews news = new OneNews(); TaskCompletionSource <OneNews> tcs = new TaskCompletionSource <OneNews>(); using (var client = new HttpClient()) { var response = await client.GetAsync(htmlUrl); string url = await response.Content.ReadAsStringAsync(); try { HtmlDocument hd = new HtmlDocument(); hd.LoadHtml(url); HtmlNode itemDecription = hd.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("itemFullText")).ToList()[0]; string descr = itemDecription.InnerText.Trim().Replace("<p>", "").Replace("</p>", "").Replace("\r", ""); string[] els = descr.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); descr = ""; foreach (string s in els) { descr = descr + s.Trim().Replace(""", "\"").Replace(" ", "").Replace("«", "\"").Replace("»", "\"").Replace("–", "–").Replace("—", "—") + "\n"; } news.Description = descr; HtmlNode itemVideo = hd.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("avPlayerBlock")).ToList()[0]; string videoId = itemVideo.Element("iframe").Attributes["src"].Value.ToString(); string temp = videoId.Substring(0, videoId.IndexOf('?')); news.YouTubeID = temp.Substring(29, temp.Length - 29); tcs.SetResult(news); } catch (Exception ex) { tcs.SetException(ex); } } return(tcs.Task.Result); }
public async void LoadNews(string htmlUrl) { OneNews = await NewsElementParser.Parse(htmlUrl); }
/// <summary> /// Вызывается перед отображением этой страницы во фрейме. /// </summary> /// <param name="e">Данные события, описывающие, каким образом была достигнута эта страница. /// Этот параметр обычно используется для настройки страницы.</param> protected async override void OnNavigatedTo(NavigationEventArgs e) { DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait | DisplayOrientations.Landscape | DisplayOrientations.LandscapeFlipped; if (e.Parameter != null) { DisplayInformation.DisplayContentsInvalidated += DisplayInformation_DisplayContentsInvalidated; string[] param = (string[])e.Parameter; HeaderNews.Text = param[0]; DateNews.Text = param[1]; OneNews oneNews = await NewsElementParser.Parse(param[2]); DescrNews.Text = oneNews.Description; YouTubeQuality quality = YouTubeQuality.Quality360P; if (Settings.Settings.QualityYouTubeVideo != null) { switch (Settings.Settings.QualityYouTubeVideo) { case "144p": quality = YouTubeQuality.Quality144P; break; case "240p": quality = YouTubeQuality.Quality240P; break; case "360p": quality = YouTubeQuality.Quality360P; break; case "480p": quality = YouTubeQuality.Quality480P; break; case "720p": quality = YouTubeQuality.Quality720P; break; case "1080p": quality = YouTubeQuality.Quality1080P; break; } } YouTubeUri videoUri = null; bool error = false; try { videoUri = await YouTube.GetVideoUriAsync(oneNews.YouTubeID, quality); } catch (YouTubeUriNotFoundException) { error = true; } if (!error && videoUri != null) { playerYouTube.Source = videoUri.Uri; } else { var dialog = new MessageDialog("Не удалось загрузить видео. \nПопробуйте поменять качество в настройках."); await dialog.ShowAsync(); } } else { if (Frame.CanGoBack) { Frame.GoBack(); } } }
public async Task <IActionResult> OneNews(OneNews oneNews) { OneNewsVM oneNewsVM = await _evilInfoParsing.GetOneNews(oneNews, _mapper); return(View(oneNewsVM)); }