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
							 | 
						||
| 
								 | 
							
								}
							 |