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

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