/// <summary> /// Get all of the <see cref="JobId"/> values that are children of the provided /// value. The provided value can be a folder, the root or even a normal job. The /// latter of which simply will not have any children. /// </summary> public List <JobId> GetJobIds(JobId parent = null) { parent = parent ?? JobId.Root; var data = GetJson(JenkinsUtil.GetJobPath(parent)); return(JsonUtil.ParseJobs(parent, (JArray)data["jobs"])); }
public static bool TryConvertPathToJobId(string path, out JobId jobId) { var items = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (items.Length % 2 != 0) { jobId = null; return(false); } var current = JobId.Root; for (var i = 0; i < items.Length; i += 2) { if (items[i] != "job") { jobId = null; return(false); } current = new JobId(shortName: items[i + 1], parent: current); } jobId = current; return(true); }
public QueuedItemInfo(int id, JobId jobId, PullRequestInfo prInfo, int?buildNumber) { Id = id; JobId = jobId; PullRequestInfo = prInfo; BuildNumber = buildNumber; }
public string GetJobKind(JobId id) { var json = GetJson(JenkinsUtil.GetJobIdPath(id)); var xml = GetXml(JenkinsUtil.GetJobIdPath(id)); return(XmlUtil.ParseJobKind(xml)); }
public JobInfo GetJobInfo(JobId id) { var json = GetJson(JenkinsUtil.GetJobPath(id)); var xml = GetXml(JenkinsUtil.GetJobPath(id)); return(GetJobInfoCore(id, json, xml)); }
public static string ConvertJobIdToPath(JobId jobId) { var builder = new StringBuilder(); ConvertJobIdToPathCore(builder, jobId); return(builder.ToString()); }
public async Task <List <JobId> > GetJobIdsAsync(JobId parent = null) { parent = parent ?? JobId.Root; var data = await GetJsonAsync(JenkinsUtil.GetJobPath(parent)); return(JsonUtil.ParseJobs(parent, (JArray)data["jobs"])); }
private static JobInfo GetJobInfoCore(JobId id, JObject json, XElement xml) { var builds = JsonUtil.ParseBuilds(id, (json["builds"] as JArray) ?? new JArray()) ?? new List <BuildId>(capacity: 0); var jobs = JsonUtil.ParseJobs(id, (json["jobs"] as JArray) ?? new JArray()) ?? new List <JobId>(capacity: 0); var kind = XmlUtil.ParseJobKind(xml); return(new JobInfo(id, kind, builds, jobs)); }
public async Task <JobInfo> GetJobInfoAsync(JobId id) { var json = await GetJsonAsync(JenkinsUtil.GetJobPath(id)); var xml = await GetXmlAsync(JenkinsUtil.GetJobPath(id)); return(GetJobInfoCore(id, json, xml)); }
public async Task <string> GetJobKindAsync(JobId id) { var json = await GetJsonAsync(JenkinsUtil.GetJobIdPath(id)); var xml = GetXml(JenkinsUtil.GetJobIdPath(id)); return(XmlUtil.ParseJobKind(xml)); }
internal static BuildInfo ParseBuildInfo(JobId jobId, JObject build) { var id = build.Value <int>("id"); var duration = TimeSpan.FromMilliseconds(build.Value <int>("duration")); var state = ParseBuildInfoState(build); var date = JenkinsUtil.ConvertTimestampToDateTimeOffset(build.Value <long>("timestamp")); var buildId = new BuildId(id, jobId); var machineName = build.Value <string>("builtOn"); return(new BuildInfo(buildId, state, date, duration, machineName)); }
public JobInfo(JobId id, string jobKind, List <BuildId> builds = null, List <JobId> jobs = null) { Debug.Assert(jobs.All(x => x.Parent.Name == id.Name)); builds = builds ?? new List <BuildId>(capacity: 0); jobs = jobs ?? new List <JobId>(capacity: 0); Id = id; Builds = builds; Jobs = jobs; JobKind = jobKind; }
internal static List <BuildInfo> ParseBuildInfoList(JobId jobId, JObject data) { var list = new List <BuildInfo>(); var builds = (JArray)data["builds"]; foreach (JObject build in builds) { list.Add(ParseBuildInfo(jobId, build)); } return(list); }
internal static List <BuildId> ParseBuilds(JobId id, JArray builds) { Debug.Assert(builds != null); var list = new List <BuildId>(); foreach (var cur in builds) { var build = cur.ToObject <Json.Build>(); list.Add(new BuildId(build.Number, id)); } return(list); }
public static string GetJobPath(JobId id) { if (id.IsRoot) { return(""); } if (id.Parent.IsRoot) { return($"job/{id.ShortName}"); } return($"{GetJobPath(id.Parent)}/job/{id.ShortName}"); }
public static bool IsAuthNeededHeuristic(JobId jobId) { // TODO: Bit of a hack. Avoiding API rate limit issues by using a hueristic of // when to do authentication. var name = jobId.Name; if (name.Contains("Private") || name.Contains("perf_win10") || name.Contains("dotnet_citest")) { return(true); } return(false); }
private static void ConvertJobIdToPathCore(StringBuilder builder, JobId jobId) { if (jobId.IsRoot) { return; } ConvertJobIdToPathCore(builder, jobId.Parent); if (builder.Length != 0) { builder.Append('/'); } builder.Append($"job/{jobId.ShortName}"); }
internal static List <JobId> ParseJobs(JobId parent, JArray jobs) { if (jobs == null) { return(new List <JobId>(capacity: 0)); } var list = new List <JobId>(); foreach (var cur in jobs) { var name = cur.Value <string>("name"); var id = new JobId(name, parent); list.Add(id); } return(list); }
public static string GetJobDisablePath(JobId jobId) { return($"{GetJobPath(jobId)}/disable"); }
public static string GetJobEnablePath(JobId jobId) { return($"{GetJobPath(jobId)}/enable"); }
public static string GetJobDeletePath(JobId jobId) { return($"{GetJobPath(jobId)}/doDelete"); }
public BuildId(int number, JobId jobId) { Number = number; JobId = jobId; }
public static Uri GetJobUri(Uri baseUrl, JobId jobId) { var path = GetJobPath(jobId); return(GetUri(baseUrl, path)); }
public BoundBuildId(Uri host, int number, JobId id) : this(host, new BuildId(number, id)) { }
/// <summary> /// Get all of the <see cref="BuildInfo"/> values for the specified <see cref="JobId"/>. /// </summary> public List <BuildInfo> GetBuildInfoList(JobId id) { var data = GetJson(JenkinsUtil.GetJobPath(id), tree: JsonUtil.BuildInfoListTreeFilter, depth: 2); return(JsonUtil.ParseBuildInfoList(Host, id, data)); }
public async Task <List <BuildInfo> > GetBuildInfoListAsync(JobId id) { var data = await GetJsonAsync(JenkinsUtil.GetJobPath(id), tree : JsonUtil.BuildInfoListTreeFilter, depth : 2); return(JsonUtil.ParseBuildInfoList(Host, id, data)); }
public bool JobDisable(JobId jobId) { return(DoAction(JenkinsUtil.GetJobDisablePath(jobId))); }
public async Task <List <BuildId> > GetBuildIdsAsync(JobId jobId) { var data = await GetJsonAsync(JenkinsUtil.GetJobPath(jobId)); return(JsonUtil.ParseBuilds(jobId, (JArray)data["builds"] ?? new JArray())); }
public List <BuildId> GetBuildIds(JobId jobId) { var data = GetJson(JenkinsUtil.GetJobPath(jobId)); return(JsonUtil.ParseBuilds(jobId, (JArray)data["builds"] ?? new JArray())); }
public async Task <bool> JobDisableAsync(JobId jobId) { return(await DoActionAsync(JenkinsUtil.GetJobDisablePath(jobId))); }