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