| 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.timeZone) { |
| clientDefaults.headers["time-zone"] = options.timeZone; |
| } |
| |
| 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; |
| } |