Skip to content

Commit b54d367

Browse files
committed
use restful-client
1 parent 9e90dec commit b54d367

File tree

13 files changed

+46
-171
lines changed

13 files changed

+46
-171
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
module.exports = process.env.GITLAB_COV ? require('./lib-cov/gitlab') : require('./lib/gitlab');
1+
module.exports = require('./lib/gitlab');

lib/gitlab.js

Lines changed: 17 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
*/
1212

1313
var debug = require('debug')('gitlab');
14-
var urllib = require('urllib');
14+
var restful = require('restful-client');
15+
var util = require('util');
1516
var Milestone = require('./milestone');
1617
var Project = require('./project');
1718
var Member = require('./member');
@@ -27,82 +28,32 @@ var Repository = require('./repository');
2728
* - {String} api, api root url, e.g.: 'http://gitlab.com/api/v3'
2829
* - {String} privateToken, You can find or reset your private token in your profile.
2930
*/
30-
function Client(options) {
31-
this.api = options.api;
31+
function Gitlab(options) {
32+
options = options || {};
33+
options.api = options.api || 'https://gitlab.com/api/v3';
34+
this.constructor.super_.call(this, options);
35+
3236
this.privateToken = options.privateToken;
3337

3438
this.milestones = new Milestone(this);
35-
this.projects = new Project(this);
3639
this.members = new Member(this);
3740
this.hooks = new Hook(this);
3841
this.issues = new Issue(this);
3942
this.users = new User(this);
40-
this.repository = new Repository(this);
43+
44+
this.addResources({
45+
projects: Project,
46+
repository: Repository,
47+
});
4148
}
4249

43-
Client.prototype.request = function (method, pathname, data, callback) {
44-
var dataType = data.dataType || 'json';
45-
delete data.dataType;
50+
util.inherits(Gitlab, restful.RESTFulClient);
4651

47-
var keys = pathname.match(/\:\w+/g);
48-
if (keys) {
49-
for (var i = 0; i < keys.length; i++) {
50-
var key = keys[i];
51-
var k = key.substring(1);
52-
var val = data[k];
53-
if (val !== undefined) {
54-
pathname = pathname.replace(key, val);
55-
delete data[k];
56-
}
57-
}
58-
}
59-
// support custom token
60-
if (data.private_token === undefined) {
61-
data.private_token = this.privateToken;
62-
}
63-
var url = this.api + pathname;
64-
urllib.request(url, {
65-
type: method,
66-
dataType: dataType,
67-
data: data,
68-
}, function (err, result, res) {
69-
// debug('%s %s %j: status: %s, result: %j, err: %j', method, url, data, res.statusCode, result, err);
70-
if (err) {
71-
if (err.name === 'SyntaxError') {
72-
err.name = 'Gitlab' + res.statusCode + 'Error';
73-
if (res) {
74-
err.message = res.headers.status || 'Unknow Error ' + res.statusCode;
75-
}
76-
} else {
77-
err.name = 'Gitlab' + err.name;
78-
}
79-
err.headers = res && res.headers;
80-
if (Buffer.isBuffer(result)) {
81-
result = result.toString();
82-
}
83-
err.data = { resBody: result, requestData: data };
84-
err.statusCode = res && res.statusCode;
85-
err.method = method;
86-
err.url = url;
87-
return callback(err);
88-
}
89-
if (res.statusCode !== 200 && res.statusCode !== 201) {
90-
err = new Error(result && result.message ? result.message : 'Unknow Error ' + res.statusCode);
91-
err.name = 'Gitlab' + res.statusCode + 'Error';
92-
if (Buffer.isBuffer(result)) {
93-
result = result.toString();
94-
}
95-
err.data = { resBody: result, requestData: data };
96-
err.headers = res.headers;
97-
err.statusCode = res.statusCode;
98-
err.method = method;
99-
err.url = url;
100-
return callback(err);
101-
}
102-
callback(null, result);
103-
});
52+
Gitlab.prototype.setAuthentication = function (req) {
53+
req.params.data.private_token = req.params.data.private_token || this.privateToken;
54+
return req;
10455
};
10556

10657
exports.create = function (options) {
107-
return new Client(options);
58+
return new Gitlab(options);
10859
};

lib/hook.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Hook(client) {
17-
Resource.call(this, client, '/projects/:id/hooks', 'hook_id');
17+
this.constructor.super_.call(this, client, '/projects/:id/hooks', 'hook_id');
1818
}
19-
util.inherits(Hook, Resource);
19+
util.inherits(Hook, restful.RESTFulResource);
2020

2121
module.exports = Hook;

lib/issue.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Issue(client) {
17-
Resource.call(this, client, '/projects/:id/issues', 'issue_id');
17+
this.constructor.super_.call(this, client, '/projects/:id/issues', 'issue_id');
1818
}
19-
util.inherits(Issue, Resource);
19+
util.inherits(Issue, restful.RESTFulResource);
2020

2121
module.exports = Issue;
2222

lib/member.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Member(client) {
17-
Resource.call(this, client, '/projects/:id/members', 'user_id');
17+
this.constructor.super_.call(this, client, '/projects/:id/members', 'user_id');
1818
}
19-
util.inherits(Member, Resource);
19+
util.inherits(Member, restful.RESTFulResource);
2020

2121
module.exports = Member;

lib/milestone.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Milestone(client) {
17-
Resource.call(this, client, '/projects/:id/milestones', 'milestone_id');
17+
this.constructor.super_.call(this, client, '/projects/:id/milestones', 'milestone_id');
1818
}
19-
util.inherits(Milestone, Resource);
19+
util.inherits(Milestone, restful.RESTFulResource);
2020

2121
module.exports = Milestone;

lib/project.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Project(client) {
17-
Resource.call(this, client, '/projects', 'id');
17+
this.constructor.super_.call(this, client, '/projects', 'id');
1818
}
19-
util.inherits(Project, Resource);
19+
util.inherits(Project, restful.RESTFulResource);
2020

2121
module.exports = Project;
2222

lib/repository.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function Repository(client) {
17-
Resource.call(this, client, '/projects/:id/repository/:type', 'branch');
17+
this.constructor.super_.call(this, client, '/projects/:id/repository/:type', 'branch');
1818
}
19-
util.inherits(Repository, Resource);
19+
util.inherits(Repository, restful.RESTFulResource);
2020

2121
module.exports = Repository;
2222

@@ -125,6 +125,6 @@ Repository.prototype.getTree = function (params, callback) {
125125
*/
126126
Repository.prototype.getBlob = function (params, callback) {
127127
params.type = 'commits';
128-
params.dataType = 'buffer';
128+
params.contentType = 'buffer';
129129
this.client.request('get', this.path + '/:sha/blob', params, callback);
130130
};

lib/resource.js

Lines changed: 0 additions & 76 deletions
This file was deleted.

lib/user.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
*/
1212

1313
var util = require('util');
14-
var Resource = require('./resource');
14+
var restful = require('restful-client');
1515

1616
function User(client) {
17-
Resource.call(this, client, '/users', 'user_id');
17+
this.constructor.super_.call(this, client, '/users', 'user_id');
1818
}
19-
util.inherits(User, Resource);
19+
util.inherits(User, restful.RESTFulResource);
2020

2121
module.exports = User;

0 commit comments

Comments
 (0)