public void doIndex(StaplerRequest req, StaplerResponse resp) { String event = req.getHeader("X-GitHub-Event"); String payload = req.getParameter("payload"); if (payload == null) { logger.log(Level.SEVERE, "Request doesn't contain payload."); return; } GhprbGitHub gh = GhprbTrigger.getDscp().getGitHub(); logger.log(Level.INFO, "Got payload event: {0}", event); try { if ("issue_comment".equals(event)) { GHEventPayload.IssueComment issueComment = gh.get() .parseEventPayload(new StringReader(payload), GHEventPayload.IssueComment.class); for (GhprbRepository repo : getRepos(issueComment.getRepository())) { repo.onIssueCommentHook(issueComment); } } else if ("pull_request".equals(event)) { GHEventPayload.PullRequest pr = gh.get().parseEventPayload(new StringReader(payload), GHEventPayload.PullRequest.class); for (GhprbRepository repo : getRepos(pr.getPullRequest().getRepository())) { repo.onPullRequestHook(pr); } } else { logger.log(Level.WARNING, "Request not known"); } } catch (IOException ex) { logger.log(Level.SEVERE, "Failed to parse github hook payload.", ex); } }
private boolean initGhRepository() { GitHub gitHub = null; try { GhprbGitHub repo = helper.getGitHub(); if (repo == null) { return false; } gitHub = repo.get(); if (gitHub == null) { logger.log(Level.SEVERE, "No connection returned to GitHub server!"); return false; } if (gitHub.getRateLimit().remaining == 0) { return false; } } catch (FileNotFoundException ex) { logger.log(Level.INFO, "Rate limit API not found."); } catch (IOException ex) { logger.log(Level.SEVERE, "Error while accessing rate limit API", ex); return false; } if (ghRepository == null) { try { ghRepository = gitHub.getRepository(reponame); } catch (IOException ex) { logger.log( Level.SEVERE, "Could not retrieve GitHub repository named " + reponame + " (Do you have properly set 'GitHub project' field in job configuration?)", ex); return false; } } return true; }