@Override public JsonNode getBuildInfo(String buildName, String buildNumber) { return jsonClient.get("/api/build/%s/%s", buildName, buildNumber).path("buildInfo"); }
@Override public JsonNode aql(String query) { return jsonClient.post( new StringEntity( query, ContentType.create("text/plain", "UTF-8") ), "/api/search/aql" ); }
@Override public JenkinsJob getJob(String job) { String path = job.replaceAll("/job/", "/").replaceAll("/", "/job/"); String jobPath = jsonClient.getUrl("job/%s", path); String jobName = StringUtils.substringAfterLast(jobPath, "/"); return new JenkinsJob( jobName, jobPath ); }
@Override public JsonResult put(Object data, String path, Object... parameters) { return new SimpleJsonResult(jsonClient.put(data, path, parameters)); } };
@Override public JsonResult delete(String path, Object... parameters) { return new SimpleJsonResult(jsonClient.delete(path, parameters)); }
@Override public List<String> getProjects() { JsonNode node = jsonClient.get("/rest/api/2/project"); List<String> projects = new ArrayList<>(); for (JsonNode child : node) { projects.add(child.path("key").asText()); } return projects; }
@Override public JsonResult post(Object data, String path, Object... parameters) { return new SimpleJsonResult(jsonClient.post(data, path, parameters)); }
@Override public JenkinsInfo getInfo() { JsonNode tree = jsonClient.get("/api/json"); return new JenkinsInfo( tree.path("slaveAgentPort").asInt() ); }
@Override public List<String> getBuildNames() { JsonNode node = jsonClient.get("/api/build"); List<String> names = new ArrayList<>(); node.path("builds").forEach((JsonNode numberNode) -> { String name = StringUtils.stripStart(numberNode.path("uri").asText(), "/"); if (StringUtils.isNotBlank(name)) { names.add(name); } }); return names; }
@Override public JIRAIssue getIssue(String key, JIRAConfiguration configuration) { JsonNode node; try { node = jsonClient.get("/rest/api/2/issue/%s?expand=names", key); } catch (ClientForbiddenException ex) { // The issue cannot be accessed // TODO What do we log here? // For the moment, ignoring silently return null; } catch (ClientNotFoundException ex) { // Issue not found return null; } return toIssue(configuration, node); }
@Override public List<String> getBuildNumbers(String buildName) { try { JsonNode node = jsonClient.get("/api/build/%s", buildName); List<String> numbers = new ArrayList<>(); node.path("buildsNumbers").forEach((JsonNode numberNode) -> { String number = StringUtils.stripStart(numberNode.path("uri").asText(), "/"); if (StringUtils.isNotBlank(number)) { numbers.add(number); } }); return numbers; } catch (ClientNotFoundException ex) { // When the build is not defined, returns no build number return Collections.emptyList(); } }
@Override public JsonResult get(String path, Object... parameters) { return new SimpleJsonResult(jsonClient.get(path, parameters)); }