Skip to content

Commit

Permalink
feat(parser): Add GitLab parser
Browse files Browse the repository at this point in the history
  • Loading branch information
olls committed Feb 9, 2016
1 parent af61b1b commit 951d0d2
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
10 changes: 7 additions & 3 deletions build.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@ var Build = function (req, res, payload, build_manager, id) {
};

// Load and check payload
self.parser = req.headers['travis-repo-slug'] ?
new parser.Travis(payload, req.headers, self.build_manager.config) :
new parser.GitHub(payload, req.headers, self.build_manager.config);
if (req.headers['travis-repo-slug']) {
self.parser = new parser.Travis(payload, req.headers, self.build_manager.config);
} else if (req.headers['X-GitHub-Delivery']) {

This comment has been minimized.

Copy link
@geraintwhite

geraintwhite Feb 10, 2016

Member

Why not use x-hub-signature?

This comment has been minimized.

Copy link
@olls

olls Feb 10, 2016

Author Member

Because this one seemed more like a Github label, whereas the x-hub-signature is just a side effect.

self.parser = new parser.GitHub(payload, req.headers, self.build_manager.config);
} else {
self.parser = new parser.GitLab(payload, req.headers, self.build_manager.config);
}

self.ui.payload = self.parser.parse_body();
};
Expand Down
40 changes: 40 additions & 0 deletions parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,45 @@ var GitHub = (function () {
return gh_parser;
})();

var GitLab = (function () {
var gl_parser = function () { Parser.apply(this, arguments); };
util.inherits(gl_parser, Parser);

gl_parser.prototype.parse_body = function () {
try { return (this.payload = JSON.parse(this.body)); }
catch (e) { return undefined; }
};

gl_parser.prototype.verify_signature = function () {
return true;
};

gl_parser.prototype.extract = function () {
if (!(this.payload.repository &&
this.payload.repository.git_ssh_url &&
this.payload.repository.homepage &&
this.payload.ref &&
this.payload.total_commits_count &&
this.payload.commits)) {
return undefined;
}

var slug = this.payload.repository.git_ssh_url.split(':')[1];
if (slug.endsWith('.git')) {
slug = slug.slice(0,-4);
}

return (this.data = {
slug: slug,
branch: this.payload.ref.replace(/^refs\/heads\//, ''),
url: this.payload.repository.homepage,
commit: this.payload.total_commits_count > 0 ? this.payload.commits.slice(-1) : undefined
});
};

return gl_parser;
})();

var Travis = (function () {
var travis_parser = function () { Parser.apply(this, arguments); };
util.inherits(travis_parser, Parser);
Expand Down Expand Up @@ -82,5 +121,6 @@ var Travis = (function () {

module.exports = {
GitHub: GitHub,
GitLab: GitLab,
Travis: Travis
};

0 comments on commit 951d0d2

Please sign in to comment.