public JobInfo(JobId id, PullRequestInfo pullRequestInfo, JobState state, DateTime date) { Id = id; PullRequestInfo = pullRequestInfo; State = state; Date = date; }
internal static bool TryParsePullRequestInfo(JArray actions, out PullRequestInfo info) { var container = actions.First(x => x["parameters"] != null); string sha1 = null; string pullLink = null; int? pullId = null; string pullAuthorEmail = null; string commitAuthorEmail = null; var parameters = (JArray)container["parameters"]; foreach (var pair in parameters) { switch (pair.Value<string>("name")) { case "ghprbActualCommit": sha1 = pair.Value<string>("value"); break; case "ghprbPullId": pullId = pair.Value<int>("value"); break; case "ghprbPullAuthorEmail": pullAuthorEmail = pair.Value<string>("value"); break; case "ghprbActualCommitAuthorEmail": commitAuthorEmail = pair.Value<string>("value"); break; case "ghprbPullLink": pullLink = pair.Value<string>("value"); break; default: break; } } // It's possible for the pull email to be blank if the Github settings for the user // account hides their public email address. In that case fall back to the commit // author. It's generally the same value and serves as a nice backup identifier. if (string.IsNullOrEmpty(pullAuthorEmail)) { pullAuthorEmail = commitAuthorEmail; } if (sha1 == null || pullLink == null || pullId == null || pullAuthorEmail == null) { info = null; return false; } info = new PullRequestInfo( authorEmail: pullAuthorEmail, id: pullId.Value, pullUrl: pullLink, sha1: sha1); return true; }