You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.6 KiB
109 lines
2.6 KiB
const ghutils = require('ghutils') |
|
, apiRoot = ghutils.apiRoot |
|
|
|
|
|
function listUser (auth, user, options, callback) { |
|
return list (auth, 'user', user, options, callback) |
|
} |
|
|
|
|
|
function listOrg (auth, org, options, callback) { |
|
return list (auth, 'org', org, options, callback) |
|
} |
|
|
|
|
|
function list (auth, type, org, options, callback) { |
|
if (typeof org == 'function') { // list for this user |
|
callback = org |
|
options = {} |
|
org = null |
|
} else if (typeof options == 'function') { // no options |
|
callback = options |
|
options = {} |
|
} |
|
|
|
var urlbase = apiRoot |
|
|
|
if (org == null) { |
|
urlbase += '/user/repos' |
|
} else { |
|
if (type == 'org') |
|
urlbase += '/orgs/' + org + '/repos?' |
|
else |
|
urlbase += '/users/' + org + '/repos?' |
|
} |
|
|
|
ghutils.lister(auth, urlbase, options, callback) |
|
} |
|
|
|
|
|
;[ 'refs', 'tags', 'branches', 'commits' ].forEach(function (type) { |
|
var singular = type.replace(/e?s$/, '') |
|
|
|
var lister = function (auth, org, repo, options, callback) { |
|
if (typeof options == 'function') { // no options |
|
callback = options |
|
options = {} |
|
} |
|
|
|
var url = refsBaseUrl(org, repo, type) |
|
ghutils.lister(auth, url, options, callback) |
|
} |
|
|
|
module.exports['list' + type[0].toUpperCase() + type.substring(1)] = lister |
|
|
|
if (type == 'tag') |
|
return |
|
|
|
// no getTag API |
|
var getter = function (auth, org, repo, ref, options, callback) { |
|
if (typeof options == 'function') { |
|
callback = options |
|
options = {} |
|
} |
|
|
|
// a valid ref but we're not using this format |
|
ref = ref.replace(/^refs\//, '') |
|
|
|
var url = refsBaseUrl(org, repo, type) + '/' + ref |
|
ghutils.ghget(auth, url, options, callback) |
|
} |
|
|
|
module.exports['get' + singular[0].toUpperCase() + singular.substring(1)] = getter |
|
}) |
|
|
|
function getCommitComments (auth, org, repo, sha1, options, callback) { |
|
var ref = sha1 + '/comments' |
|
return module.exports.getCommit(auth, org, repo, ref, options, callback) |
|
} |
|
|
|
function createLister (type) { |
|
return function list (auth, org, repo, options, callback) { |
|
if (typeof options == 'function') { |
|
callback = options |
|
options = {} |
|
} |
|
|
|
var url = baseUrl(org, repo) + '/' + type |
|
ghutils.lister(auth, url, options, callback) |
|
} |
|
} |
|
|
|
|
|
function refsBaseUrl (org, repo, type) { |
|
if (type == 'refs') |
|
type = 'git/' + type |
|
return baseUrl(org, repo) + '/' + type |
|
} |
|
|
|
|
|
function baseUrl (org, repo) { |
|
return apiRoot + '/repos/' + org + '/' + repo |
|
} |
|
|
|
|
|
module.exports.listUser = listUser |
|
module.exports.listOrg = listOrg |
|
module.exports.baseUrl = baseUrl |
|
module.exports.getCommitComments = getCommitComments |
|
module.exports.createLister = createLister
|
|
|