public async Task Posts_Delete() { var post = new Post() { Title = new Title("Title 1"), Content = new Content("Content PostCreate") }; var createdPost = await _clientAuth.Posts.Create(post); Assert.IsNotNull(createdPost); var resonse = await _clientAuth.Posts.Delete(createdPost.Id); Assert.IsTrue(resonse); await Assert.ThrowsExceptionAsync <WPException>(async() => { var postById = await _clientAuth.Posts.GetByID(createdPost.Id); }); // Post should be available in trash var queryBuilder = new PostsQueryBuilder() { Statuses = new Status[] { Status.Trash }, PerPage = 100 }; var posts = await _clientAuth.Posts.Query(queryBuilder, true); var deletedPost = posts.Where(x => x.Id == createdPost.Id).FirstOrDefault(); Assert.IsNotNull(deletedPost); }
public void Multi_Parameter_Query_Works_Test() { // Initialize var builder = new PostsQueryBuilder() { Page = 2, Embed = true }; Console.WriteLine(builder.BuildQueryURL()); Assert.AreEqual(builder.BuildQueryURL(), "?page=2&_embed=true"); }
public void Multi_Parameter_Query_Works_Test() { // Initialize var builder = new PostsQueryBuilder() { Page = 2, Embed = true }; Console.WriteLine(builder.BuildQueryURL()); Assert.AreEqual("?page=2&orderby=date&order=desc&_embed=true&context=view", builder.BuildQueryURL()); }
async Task ExecuteLoadMoreItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { // Items.Clear(); Title = $"Загрузка страницы №{countPage}.."; LoadMoreButtonVisibility = false; OnPropertyChanged(""); var queryBuilder = new PostsQueryBuilder { PerPage = 10, Page = countPage++ }; var next10post = await wclient.Posts.Query(queryBuilder); Task T = GetImageUrlCollection(next10post); if (next10post?.Count() != 0) { OnPropertyChanged(""); _Items.AddRange(next10post.ToList()); OnPropertyChanged(""); Items = new ObservableCollection <Post>(_Items); OnPropertyChanged(""); } LoadMoreButtonVisibility = true; // TestString = _Items[0].Title.Rendered; // return; } catch (Exception ex) { Debug.WriteLine(ex); Crashes.TrackError(ex); } finally { Title = "ШОСТКА.INFO"; OnPropertyChanged(""); IsBusy = false; } }
public async Task <IEnumerable <Post> > ListAsync(int Page = 1, int PerPage = 20, string Filter = "", int[] Categories = null, DataSource DataSource = DataSource.Cloud) { IEnumerable <Post> posts = null; Filter = Filter.ToLower(); if (DataSource == DataSource.Cloud) { PostsQueryBuilder QueryBuilder = new PostsQueryBuilder { Page = Page, PerPage = PerPage, Search = Filter.ToLower(), Categories = Categories }; posts = await Query(QueryBuilder); if (posts != null) { foreach (var post in posts) { var LocalPost = LocalPosts.FirstOrDefault(p => p.Id == post.Id); if (LocalPost is Post) { LocalPosts.Remove(LocalPost); LocalPosts.Add(post); } else { LocalPosts.Add(post); } } File.WriteAllText(_cachedPath, JsonConvert.SerializeObject(LocalPosts)); } } else { posts = LocalPosts.OrderByDescending(pos => pos.Date).AsEnumerable(); if (Categories != null) { posts = posts.Where(u => u.Categories.Contains(Categories.FirstOrDefault())); } if (!string.IsNullOrEmpty(Filter)) { posts = posts.Where(pos => pos.Title.Rendered.ToLower().Contains(Filter) || pos.Content.Rendered.ToLower().Contains(Filter)); } posts = posts.Skip((Page - 1) * PerPage).Take(PerPage); } return(posts); }
public static List <WordPressPCL.Models.Post> GetTagPosts(int[] tagIDs) { List <WordPressPCL.Models.Post> posts = null; Task.Run(() => { Constants wpsite = new Constants(); var client = new WordPressClient(wpsite.resturl); var queryBuilder = new PostsQueryBuilder(); queryBuilder.Tags = tagIDs; var post_task = client.Posts.Query(queryBuilder); post_task.Wait(); posts = post_task.Result.ToList(); }).Wait(); return(posts); }
public async Task Posts_Query() { var queryBuilder = new PostsQueryBuilder() { Page = 1, PerPage = 15, OrderBy = PostsOrderBy.Title, Order = Order.ASC, Statuses = new Status[] { Status.Publish }, Embed = true }; var queryresult = await _clientAuth.Posts.Query(queryBuilder); Assert.AreEqual(queryBuilder.BuildQueryURL(), "?page=1&per_page=15&orderby=title&status=publish&order=asc&_embed=true"); Assert.IsNotNull(queryresult); Assert.AreNotSame(queryresult.Count(), 0); }
public static List <WordPressPCL.Models.Post> GetCategoryPosts(int[] categoryIDs, int numOfPosts) { List <WordPressPCL.Models.Post> posts = null; Task.Run(() => { Constants wpsite = new Constants(); var client = new WordPressClient(wpsite.resturl); var queryBuilder = new PostsQueryBuilder(); queryBuilder.Page = 1; queryBuilder.PerPage = numOfPosts; queryBuilder.Categories = categoryIDs; var post_task = client.Posts.Query(queryBuilder); post_task.Wait(); posts = post_task.Result.ToList(); }).Wait(); return(posts); }
public static List <WordPressPCL.Models.Post> GetFeaturedPosts() { List <WordPressPCL.Models.Post> posts = null; Task.Run(() => { Constants wpsite = new Constants(); var client = new WordPressClient(wpsite.resturl); var queryBuilder = new PostsQueryBuilder(); queryBuilder.PerPage = wpsite.featdisplnum; queryBuilder.Page = 1; var featDisplAffix = new System.Text.StringBuilder(); featDisplAffix.Append(wpsite.featdispl[0]); featDisplAffix.Append(wpsite.featdispl[1]); if ((featDisplAffix.ToString()) == "t-") { var featDispl = new System.Text.StringBuilder(); featDispl.Append(wpsite.featdispl); string tags = featDispl.Remove(0, 2).ToString(); List <string> tagListString = tags.Split(',').ToList(); List <int> tagList = tagListString.Select(int.Parse).ToList(); queryBuilder.Tags = tagList.ToArray(); } else { if ((featDisplAffix.ToString()) == "c-") { var featDispl = new System.Text.StringBuilder(); featDispl.Append(wpsite.featdispl); string cats = featDispl.Remove(0, 2).ToString(); List <string> catListString = cats.Split(',').ToList(); List <int> catList = catListString.Select(int.Parse).ToList(); queryBuilder.Categories = catList.ToArray(); } } var post_task = client.Posts.Query(queryBuilder); post_task.Wait(); posts = post_task.Result.ToList(); }).Wait(); return(posts); }
/// <summary> /// Create a parametrized query and get a result /// </summary> /// <param name="queryBuilder">Posts query builder with specific parameters</param> /// <param name="useAuth">Send request with authenication header</param> /// <returns>List of filtered posts</returns> public async Task <IEnumerable <Post> > Query(PostsQueryBuilder queryBuilder, bool useAuth = false) { return(await _httpHelper.GetRequest <IEnumerable <Post> >($"{_defaultPath}{_methodPath}{queryBuilder.BuildQueryURL()}", false, useAuth).ConfigureAwait(false)); }
private void Populate() { Task.Run(() => { var client = new WordPressClient(wpsite.resturl); var user_task = client.Users.GetByID(UserID); user_task.Wait(); var result = user_task.Result; ProfilePicture = new Uri(result.AvatarUrls.Size96.ToString()); Description = result.Description; Email = result.Email; FirstName = result.FirstName; LastName = result.LastName; Locale = result.Locale; DisplayName = result.Name; Nickname = result.NickName; // Nickname = result.UserName; Registered = result.RegisteredDate; AuthorUri = new Uri(result.Link); var queryBuilder = new PostsQueryBuilder(); queryBuilder.Authors = new int[] { UserID }; var posts_task = client.Posts.Query(queryBuilder); posts = posts_task.Result.ToList(); posts_task.Wait(); }).Wait(); var metaFS = new FormattedString(); if (cacheMedia) { AuthorProfilePic.Source = new UriImageSource { CachingEnabled = true, Uri = ProfilePicture }; } else { AuthorProfilePic.Source = ProfilePicture; } if (!((string.IsNullOrEmpty(FirstName)) && (string.IsNullOrEmpty(FirstName)))) { AuthorName.Text = FirstName + LastName; } else { AuthorName.Text = DisplayName; } // metaFS.Spans.Add(TitleName); metaFS.Spans.Add(new Span { Text = Description }); AuthorMeta.FormattedText = metaFS; AuthorPostsTitle.Text = "Posts written by " + DisplayName + ":"; foreach (var item in posts) { var tapGestureRecognizer = new TapGestureRecognizer(); tapGestureRecognizer.Tapped += async(s, e) => { await Navigation.PushAsync(new Post(item.Id)); }; tapGestureRecognizer.NumberOfTapsRequired = 1; // single-tap Frame featuredFrame = new Frame(); featuredFrame.BorderColor = Color.Gray; featuredFrame.CornerRadius = 5; featuredFrame.Padding = 20; featuredFrame.Margin = new Thickness(0, 10, 0, 0); featuredFrame.GestureRecognizers.Add(tapGestureRecognizer); Label postTitle = new Label(); // postTitle.FontSize = (double)NamedSize.Subtitle; postTitle.FontSize = 22; postTitle.FontAttributes = FontAttributes.Bold; var html = item.Title.Rendered; var htmlTitle = new HtmlDocument(); htmlTitle.LoadHtml(html); postTitle.Text = WebUtility.HtmlDecode(htmlTitle.DocumentNode.InnerText); BoxView titleSeparator = new BoxView(); titleSeparator.Color = Color.Gray; titleSeparator.HeightRequest = 1; titleSeparator.HorizontalOptions = LayoutOptions.Fill; Image postFeaturedImage = new Image(); postFeaturedImage.Aspect = Aspect.AspectFill; if (cacheMedia) { postFeaturedImage.Source = new UriImageSource { CachingEnabled = true, Uri = Constants.GetMediaUri(item.FeaturedMedia.Value) }; } else { postFeaturedImage.Source = ImageSource.FromUri(Constants.GetMediaUri(item.FeaturedMedia.Value)); } BoxView imageSeparator = new BoxView(); imageSeparator.Color = Color.Gray; imageSeparator.HeightRequest = 2; imageSeparator.HorizontalOptions = LayoutOptions.Fill; Label publishDate = new Label(); // exerpt.FontSize = (double)NamedSize.Body; publishDate.FontSize = 12; DateTime publishedDateTime = item.DateGmt; TimeSpan difference = DateTime.Now.Subtract(publishedDateTime); if ((difference.TotalHours) > 24) { if ((Math.Round(difference.TotalDays, 0) == 1)) { publishDate.Text = Math.Round(difference.TotalDays, 0) + " day ago | " + publishedDateTime.ToString(); } else { publishDate.Text = Math.Round(difference.TotalDays, 0) + " days ago | " + publishedDateTime.ToString(); } } else { if ((Math.Round(difference.TotalHours, 0) == 1)) { publishDate.Text = Math.Round(difference.TotalHours, 0) + " hour ago | " + publishedDateTime.ToString(); } else { publishDate.Text = Math.Round(difference.TotalHours, 0) + " hours ago | " + publishedDateTime.ToString(); } } StackLayout postDetails = new StackLayout(); postDetails.Children.Add(postTitle); postDetails.Children.Add(titleSeparator); postDetails.Children.Add(postFeaturedImage); postDetails.Children.Add(imageSeparator); postDetails.Children.Add(publishDate); postDetails.Children.Add(imageSeparator); featuredFrame.Content = postDetails; PostContainer.Children.Add(featuredFrame); } }
public async Task <IEnumerable <Post> > Query(PostsQueryBuilder QueryBuilder) { return(await HttpHelper.GetRequests <IEnumerable <Post> >(_methodPath + "/" + QueryBuilder.BuildQueryURL())); }