65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
module.exports = parseOptions
 | 
						|
 | 
						|
const { Deprecation } = require('deprecation')
 | 
						|
const getUserAgent = require('universal-user-agent')
 | 
						|
const once = require('once')
 | 
						|
 | 
						|
const pkg = require('../package.json')
 | 
						|
 | 
						|
const deprecateOptionsTimeout = once((log, deprecation) => log.warn(deprecation))
 | 
						|
const deprecateOptionsAgent = once((log, deprecation) => log.warn(deprecation))
 | 
						|
const deprecateOptionsHeaders = once((log, deprecation) => log.warn(deprecation))
 | 
						|
 | 
						|
function parseOptions (options, log, hook) {
 | 
						|
  if (options.headers) {
 | 
						|
    options.headers = Object.keys(options.headers).reduce((newObj, key) => {
 | 
						|
      newObj[key.toLowerCase()] = options.headers[key]
 | 
						|
      return newObj
 | 
						|
    }, {})
 | 
						|
  }
 | 
						|
 | 
						|
  const clientDefaults = {
 | 
						|
    headers: options.headers || {},
 | 
						|
    request: options.request || {},
 | 
						|
    mediaType: {
 | 
						|
      previews: [],
 | 
						|
      format: ''
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.baseUrl) {
 | 
						|
    clientDefaults.baseUrl = options.baseUrl
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.userAgent) {
 | 
						|
    clientDefaults.headers['user-agent'] = options.userAgent
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.previews) {
 | 
						|
    clientDefaults.mediaType.previews = options.previews
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.timeout) {
 | 
						|
    deprecateOptionsTimeout(log, new Deprecation('[@octokit/rest] new Octokit({timeout}) is deprecated. Use {request: {timeout}} instead. See https://github.com/octokit/request.js#request'))
 | 
						|
    clientDefaults.request.timeout = options.timeout
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.agent) {
 | 
						|
    deprecateOptionsAgent(log, new Deprecation('[@octokit/rest] new Octokit({agent}) is deprecated. Use {request: {agent}} instead. See https://github.com/octokit/request.js#request'))
 | 
						|
    clientDefaults.request.agent = options.agent
 | 
						|
  }
 | 
						|
 | 
						|
  if (options.headers) {
 | 
						|
    deprecateOptionsHeaders(log, new Deprecation('[@octokit/rest] new Octokit({headers}) is deprecated. Use {userAgent, previews} instead. See https://github.com/octokit/request.js#request'))
 | 
						|
  }
 | 
						|
 | 
						|
  const userAgentOption = clientDefaults.headers['user-agent']
 | 
						|
  const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`
 | 
						|
 | 
						|
  clientDefaults.headers['user-agent'] = [userAgentOption, defaultUserAgent].filter(Boolean).join(' ')
 | 
						|
 | 
						|
  clientDefaults.request.hook = hook.bind(null, 'request')
 | 
						|
 | 
						|
  return clientDefaults
 | 
						|
}
 |