42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
|
module.exports = authenticate
|
||
|
|
||
|
const { Deprecation } = require('deprecation')
|
||
|
const once = require('once')
|
||
|
|
||
|
const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation))
|
||
|
|
||
|
function authenticate (state, options) {
|
||
|
deprecateAuthenticate(state.octokit.log, new Deprecation('[@octokit/rest] octokit.authenticate() is deprecated. Use "auth" constructor option instead.'))
|
||
|
|
||
|
if (!options) {
|
||
|
state.auth = false
|
||
|
return
|
||
|
}
|
||
|
|
||
|
switch (options.type) {
|
||
|
case 'basic':
|
||
|
if (!options.username || !options.password) {
|
||
|
throw new Error('Basic authentication requires both a username and password to be set')
|
||
|
}
|
||
|
break
|
||
|
|
||
|
case 'oauth':
|
||
|
if (!options.token && !(options.key && options.secret)) {
|
||
|
throw new Error('OAuth2 authentication requires a token or key & secret to be set')
|
||
|
}
|
||
|
break
|
||
|
|
||
|
case 'token':
|
||
|
case 'app':
|
||
|
if (!options.token) {
|
||
|
throw new Error('Token authentication requires a token to be set')
|
||
|
}
|
||
|
break
|
||
|
|
||
|
default:
|
||
|
throw new Error("Invalid authentication type, must be 'basic', 'oauth', 'token' or 'app'")
|
||
|
}
|
||
|
|
||
|
state.auth = options
|
||
|
}
|