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.
110 lines
2.6 KiB
110 lines
2.6 KiB
5 years ago
|
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
|