public static List <KeyValuePair <string, string> > ParseProjectHostAndUsername(string projectHostUsernamePair) { var projectHostsRegex = new Regex(@"(^|,)(?<ProjectHost>(([^:])*.{0,1})):"); var projects = RegexUtilities.GetTokenStringList(projectHostsRegex.Match(projectHostUsernamePair), "ProjectHost"); var usernameRegex = new Regex(@":(?<UserName>(([^$|^,])*))"); var usernames = RegexUtilities.GetTokenStringList(usernameRegex.Match(projectHostUsernamePair), "UserName"); if (projects == null || usernames == null || projects.Count != usernames.Count) { throw new RestException(new KeyValuePair <string, string>("project-host:username", string.Format("project-host:username pairs could not be resolved."))); } var hostAndUsername = new List <KeyValuePair <string, string> >(); for (int i = 0; i < projects.Count; i++) { if (projects[i] != null && usernames[i] != null) { hostAndUsername.Add(new KeyValuePair <string, string>(projects[i], usernames[i])); } } return(hostAndUsername); }
public List <string> GetEducationCertificates() { var educationCertificateRegex = new Regex(@"name=""eduEntry(?:[\s\w><=""/\-\?&%\+\*]+)h4>(?<EducationCertificate>([^<]+))<(?:[\s\w><=""/\-\?\+&%,]+)href(?:[^>]+)>(?<EducationCertificate>([^<]+))", RegexOptions.Multiline); var educationCertificates = RegexUtilities.GetTokenStringList(educationCertificateRegex.Match(pageSource), "EducationCertificate"); if (educationCertificates == null || educationCertificates.Count == 0) { AddWarningError("Education.Certificates"); } return(educationCertificates); }
public List <string> GetPositionDescriptions() { var positionDescsRegex = new Regex(@"class=""postitle(?:[\s\w><=""/\-\?&%:\+\.;\(\)\#]+)desc""(?:[^>]+)*>(?<Description>(([^<]|<[^/]|</[^p])*.{0,2}))</p", RegexOptions.Multiline); var positionDescs = RegexUtilities.GetTokenStringList(positionDescsRegex.Match(pageSource), "Description"); if (positionDescs == null || positionDescs.Count == 0) { AddWarningError("Position.Descriptions"); } return(positionDescs); }
public List <string> GetPositionPeriods() { var positionPeriodsRegex = new Regex(@"class=""postitle(?:[\s\w><\=""'/\?&%\+\-:\.;\(\)]+)class=""period(?:[^>]+)>(?<Period>(([^<]|<[^/]|</[^p])*.{0,2}))</p", RegexOptions.Multiline); var positionPeriods = RegexUtilities.GetTokenStringList(positionPeriodsRegex.Match(pageSource), "Period"); if (positionPeriods == null || positionPeriods.Count == 0) { AddWarningError("Position.Periods"); } return(positionPeriods); }
public List <string> GetPositionCompanies() { var positionCompaniesRegex = new Regex(@"class=""postitle(?:[\s\w><=""/\?&%\+\-:\.]+)(class=""company-profile""><span>|name=""company""(?:[^>]+)>)(?<Company>([^<]+))", RegexOptions.Multiline); var positionCompanies = RegexUtilities.GetTokenStringList(positionCompaniesRegex.Match(pageSource), "Company"); if (positionCompanies == null || positionCompanies.Count == 0) { AddWarningError("Position.Companies"); } return(positionCompanies); }
public List <string> GetPositionTitles() { var positionTitlesRegex = new Regex(@"class=""position-title(?:[\s\w><=""/\?&%\+\-:\.]+)name=""title(?:[^>]+)>(?<PositionTitle>(([^<]|<[^/]|</[^a])*.{0,2}))</a", RegexOptions.Multiline); var positionTitles = RegexUtilities.GetTokenStringList(positionTitlesRegex.Match(pageSource), "PositionTitle"); if (positionTitles == null || positionTitles.Count == 0) { AddWarningError("Position.Titles"); } return(positionTitles); }
public List <string> GetEducationPeriods() { var educationPeriodRegex = new Regex(@"name=""eduEntry(?:[\s\w><\=""'/\?&%\+\-:\.;\(\)]+)class=""period(?:[^>]+)>(?<Period>(([^<]|<[^/]|</[^p])*.{0,2}))</p", RegexOptions.Multiline); var educationPeriods = RegexUtilities.GetTokenStringList(educationPeriodRegex.Match(pageSource), "Period"); if (educationPeriods != null) { educationPeriods = educationPeriods.ConvertAll(p => (p == null) ? null : Regex.Replace(p, @"<.*?>", string.Empty)); } if (educationPeriods == null || educationPeriods.Count == 0) { AddWarningError("Education.Period"); } return(educationPeriods); }
public static List <Project> ParseProjects(this List <Project> projects, string pageSource) { var projectsRegex = new Regex(@"name=""owner([\s\w><=""']*)href=""(?<Project>(([^""])*.{0,1}))""", RegexOptions.Multiline); var rawProjects = RegexUtilities.GetTokenStringList(projectsRegex.Match(pageSource), "Project"); if (rawProjects == null || rawProjects.Count == 0) { throw new Exception("Projects could not be parsed. No projects were returned."); } foreach (string project in rawProjects) { if (!string.IsNullOrEmpty(project)) { projects.Add(new Project { Name = project, Url = string.Format("http://code.google.com{0}", project) }); } } return(projects); }