diff --git a/lib/gitlab.js b/lib/gitlab.js index 9871775..78cb4dc 100644 --- a/lib/gitlab.js +++ b/lib/gitlab.js @@ -27,12 +27,14 @@ module.exports = Gitlab; * @param {Object} options * - {String} api, api root url, e.g.: 'http://gitlab.com/api/v3' * - {String} privateToken, You can find or reset your private token in your profile. + * - {String} accessToken, Obtained via OAuth */ function Gitlab(options) { options = options || {}; options.api = options.api || 'https://gitlab.com/api/v3'; RESTFulClient.call(this, options); this.privateToken = options.privateToken; + this.accessToken = options.accessToken; this.addResources(resources); @@ -45,7 +47,12 @@ function Gitlab(options) { util.inherits(Gitlab, RESTFulClient); Gitlab.prototype.setAuthentication = function (req) { - req.params.data.private_token = req.params.data.private_token || this.privateToken; + var accessToken = req.params.data.access_token || this.accessToken; + if (accessToken) { + req.params.data.access_token = accessToken; + } else { + req.params.data.private_token = req.params.data.private_token || this.privateToken; + } return req; }; diff --git a/lib/properties.js b/lib/properties.js index 5eea755..9672b94 100644 --- a/lib/properties.js +++ b/lib/properties.js @@ -64,6 +64,10 @@ var properties = { 'transferProject' ], groupMembers: [], + namespaces: [ + 'list', + 'search', + ], }; for (var key in properties) { diff --git a/lib/resources/index.js b/lib/resources/index.js index 7f67a0a..185e9b5 100644 --- a/lib/resources/index.js +++ b/lib/resources/index.js @@ -62,4 +62,6 @@ module.exports = { resourcePath: '/projects/:id/keys', idName: 'key_id', }, + + namespaces: require('./namespace'), }; diff --git a/lib/resources/namespace.js b/lib/resources/namespace.js new file mode 100644 index 0000000..39350ac --- /dev/null +++ b/lib/resources/namespace.js @@ -0,0 +1,33 @@ +/**! + * gitlab - lib/resources/namespace.js + * + * Copyright(c) repo-utils and other contributors. + * MIT Licensed + * + * Authors: + * fengmk2 (http://fengmk2.com) + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var util = require('util'); +var restful = require('restful-client'); + +module.exports = Namespace; + +function Namespace(client) { + this.constructor.super_.call(this, client, '/namespaces', 'id'); +} +util.inherits(Namespace, restful.RESTFulResource); + +Namespace.prototype.list = function (params, callback) { + this.client.request('get', '/namespaces', params, callback); +}; + +Namespace.prototype.search = function (params, callback) { + this.client.request('get', '/namespaces/search/:query', params, callback); +};