/// <summary> /// Loads group's posts /// </summary> /// <param name="options"><see cref="LinkedInGetGroupPostsOptions"/> object representing posts retrieval options</param> /// <returns>Request result</returns> /// <remarks>This is synchronous operation, i.e. the current thread will be suspended until it finishes to load all posts. If you want to load group's posts asynchronously, consider to use <see cref="LinkedInClient.GetGroupPosts"/> function instead</remarks> public LinkedInResponse <bool> LoadPosts(LinkedInGetGroupPostsOptions options) { try { if (_Posts == null) { _Posts = new List <LinkedInGroupPost>(); } else { _Posts.Clear(); } options.GroupId = Id; _Posts.AddRange(RequestRunner.GetGroupPosts(options)); return(new LinkedInResponse <bool>(true, LinkedInResponseStatus.OK, null)); } catch (WebException wex) { return(Utils.GetResponse(false, wex, null)); } catch (Exception ex) { return(new LinkedInResponse <bool>(false, LinkedInResponseStatus.OtherException, null, ex)); } }
protected async void GetPosts(string groupId) { LinkedInGroup group = groups[groupId]; LinkedInGetGroupPostsOptions postOptions = new LinkedInGetGroupPostsOptions(); postOptions.PostOptions.SelectAll(); postOptions.GroupId = group.Id; await Task.Run(() => group.LoadPosts(postOptions)); foreach (LinkedInGroupPost post in group.Posts) { if (!posts.ContainsKey(post.Id)) { posts[post.Id] = post; postGroup[post.Id] = group; } CreateCarrier("LinkedInPost", signal => { signal.LinkedInGroup.Name.Text.Value = group.Name; signal.LinkedInGroup.Id = group.Id; signal.Id = post.Id; signal.CreationTime = post.CreationTime; signal.Summary.Text.Value = post.Summary; signal.Title.Text.Value = post.Title; signal.LinkedInPostCreator.PersonName.Name.Text.Value = post.Creator.FirstName + " " + post.Creator.LastName; }); } }
internal static string PrepareGroupPostFields(LinkedInGetGroupPostsOptions options) { var sb = new StringBuilder(); var gp = options.PostOptions; if (!gp.HasValues) { return(sb.ToString()); } sb.Append(":("); if (gp[LinkedInGroupPostFields.Id]) { sb.Append("id,"); } if (gp[LinkedInGroupPostFields.PostType]) { sb.Append("type,"); } if (gp[LinkedInGroupPostFields.Category]) { sb.Append("category,"); } if (gp[LinkedInGroupPostFields.Creator]) { sb.Append("creator,"); } if (gp[LinkedInGroupPostFields.Title]) { sb.Append("title,"); } if (gp[LinkedInGroupPostFields.Summary]) { sb.Append("summary,"); } if (gp[LinkedInGroupPostFields.CreationTime]) { sb.Append("creation-timestamp,"); } if (gp[LinkedInGroupPostFields.RelationToViewer]) { sb.Append("relation-to-viewer,"); } if (gp[LinkedInGroupPostFields.Likes]) { sb.Append("likes,"); } if (gp[LinkedInGroupPostFields.Attachment]) { sb.Append("attachment,"); } if (gp[LinkedInGroupPostFields.SiteGroupPostUrl]) { sb.Append("site-group-post-url,"); } sb.Length -= 1; sb.Append(")"); return(sb.ToString()); }
protected async void LoadPostsForGroup(TreeNode node, LinkedInGroup group) { LinkedInGetGroupPostsOptions options = new LinkedInGetGroupPostsOptions(); options.PostOptions.SelectAll(); options.GroupId = group.Id; ShowLoading(node); await Task.Run(() => group.LoadPosts(options)); ShowGroupPosts(node, group); node.ExpandAll(); }