/// <summary> /// Gets the list of recent project activity /// </summary> /// <param name="projectId">Project Id</param> /// <param name="activityTypes">The activity types you want to return.</param> /// <returns> /// List of all the project activities of the desired types. /// </returns> public List <ProjectActivity> GetRecentActivity(int projectId, params RecentActivityType[] activityTypes) { StringBuilder sb = new StringBuilder(); foreach (RecentActivityType activityType in activityTypes) { switch (activityType) { case RecentActivityType.Issues: sb.Append("&show_issues=1"); break; case RecentActivityType.Changesets: sb.Append("&show_changesets=1"); break; case RecentActivityType.News: sb.Append("&show_news=1"); break; case RecentActivityType.Documents: sb.Append("&show_documents=1"); break; case RecentActivityType.Files: sb.Append("&show_files=1"); break; case RecentActivityType.WikiEdits: sb.Append("&show_wiki_edits=1"); break; case RecentActivityType.Messages: sb.Append("&show_messages=1"); break; } } XhtmlPage page = new XhtmlPage(this.httpHelper.GetWebRequest(this.ConstructUri(String.Format(RecentActivitiesRelativeUri, projectId, sb)))); List <ProjectActivity> activities = new List <ProjectActivity>(); foreach (AtomEntry entry in AtomParser.ParseFeed(page.XmlDocument)) { activities.Add(new ProjectActivity { Title = entry.Title, Content = entry.Content, Url = entry.Id, Updated = DateTime.Parse(entry.Updated), AuthorName = entry.Author.Name, AuthorEmail = entry.Author.Email }); } return(activities); }
/// <summary> /// Gets the list of all the available issues /// </summary> /// <param name="projectId">Project Id</param> /// <returns>List of all the available issues for the project</returns> public List <Issue> GetIssues(int projectId) { if (_cache.GetIssues(projectId) != null) { return(_cache.GetIssues(projectId)); } XhtmlPage page = new XhtmlPage(this.httpHelper.GetWebRequest(this.ConstructUri(String.Format(IssueListRelativeUri, projectId)))); List <Issue> issues = new List <Issue>(); foreach (AtomEntry entry in AtomParser.ParseFeed(page.XmlDocument)) { issues.Add(new Issue { Id = entry.NumericId, Subject = entry.Title }); } _cache.SetIssues(projectId, issues); return(issues); }
/// <summary> /// Gets the list of all the available projects /// </summary> /// <returns>List of all the projects available to the user</returns> public List <Project> GetProjects() { if (_cache.Projects != null) { return(_cache.Projects); } XhtmlPage page = new XhtmlPage(this.httpHelper.GetWebRequest(this.ConstructUri(ProjectListRelativeUri))); List <Project> projects = new List <Project>(); foreach (AtomEntry entry in AtomParser.ParseFeed(page.XmlDocument)) { projects.Add(new Project { Id = entry.NumericId, Name = entry.Title }); } _cache.Projects = projects; return(projects); }