1 line
15 KiB
JSON
1 line
15 KiB
JSON
{"ast":null,"code":"'use strict';\n\nvar url = require('url');\n\nvar isUrl = /^https?:/;\n\nfunction Redirect(request) {\n this.request = request;\n this.followRedirect = true;\n this.followRedirects = true;\n this.followAllRedirects = false;\n this.followOriginalHttpMethod = false;\n\n this.allowRedirect = function () {\n return true;\n };\n\n this.maxRedirects = 10;\n this.redirects = [];\n this.redirectsFollowed = 0;\n this.removeRefererHeader = false;\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this;\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects;\n }\n\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect;\n }\n\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect;\n }\n\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects;\n }\n\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || [];\n }\n\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader;\n }\n\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod;\n }\n};\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this;\n var request = self.request;\n var redirectTo = null;\n\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location');\n request.debug('redirect', location);\n\n if (self.followAllRedirects) {\n redirectTo = location;\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break;\n\n default:\n redirectTo = location;\n break;\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response);\n\n if (authHeader) {\n request.setHeader('authorization', authHeader);\n redirectTo = request.uri;\n }\n }\n\n return redirectTo;\n};\n\nRedirect.prototype.onResponse = function (response) {\n var self = this;\n var request = self.request;\n var redirectTo = self.redirectTo(response);\n\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false;\n }\n\n request.debug('redirect to', redirectTo); // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n\n if (response.resume) {\n response.resume();\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href));\n return false;\n }\n\n self.redirectsFollowed += 1;\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo);\n }\n\n var uriPrev = request.uri;\n request.uri = url.parse(redirectTo); // handle the case where we change protocol from https to http or vice versa\n\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent;\n }\n\n self.redirects.push({\n statusCode: response.statusCode,\n redirectUri: redirectTo\n });\n\n if (self.followAllRedirects && request.method !== 'HEAD' && response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET';\n } // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n\n\n delete request.src;\n delete request.req;\n delete request._started;\n\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body;\n delete request._form;\n\n if (request.headers) {\n request.removeHeader('host');\n request.removeHeader('content-type');\n request.removeHeader('content-length');\n\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization');\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href);\n }\n\n request.emit('redirect');\n request.init();\n return true;\n};\n\nexports.Redirect = Redirect;","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/request/lib/redirect.js"],"names":["url","require","isUrl","Redirect","request","followRedirect","followRedirects","followAllRedirects","followOriginalHttpMethod","allowRedirect","maxRedirects","redirects","redirectsFollowed","removeRefererHeader","prototype","onRequest","options","self","undefined","redirectTo","response","statusCode","caseless","has","location","get","debug","method","authHeader","_auth","onResponse","setHeader","uri","call","resume","emit","Error","href","test","resolve","uriPrev","parse","protocol","agent","push","redirectUri","src","req","_started","body","_form","headers","removeHeader","hostname","originalHost","split","init","exports"],"mappings":"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","sourcesContent":["'use strict'\n\nvar url = require('url')\nvar isUrl = /^https?:/\n\nfunction Redirect (request) {\n this.request = request\n this.followRedirect = true\n this.followRedirects = true\n this.followAllRedirects = false\n this.followOriginalHttpMethod = false\n this.allowRedirect = function () { return true }\n this.maxRedirects = 10\n this.redirects = []\n this.redirectsFollowed = 0\n this.removeRefererHeader = false\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects\n }\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect\n }\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect\n }\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects\n }\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || []\n }\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader\n }\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod\n }\n}\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = null\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location')\n request.debug('redirect', location)\n\n if (self.followAllRedirects) {\n redirectTo = location\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break\n default:\n redirectTo = location\n break\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response)\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n redirectTo = request.uri\n }\n }\n return redirectTo\n}\n\nRedirect.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = self.redirectTo(response)\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false\n }\n\n request.debug('redirect to', redirectTo)\n\n // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n if (response.resume) {\n response.resume()\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))\n return false\n }\n self.redirectsFollowed += 1\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo)\n }\n\n var uriPrev = request.uri\n request.uri = url.parse(redirectTo)\n\n // handle the case where we change protocol from https to http or vice versa\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent\n }\n\n self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })\n\n if (self.followAllRedirects && request.method !== 'HEAD' &&\n response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET'\n }\n // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n delete request.src\n delete request.req\n delete request._started\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body\n delete request._form\n if (request.headers) {\n request.removeHeader('host')\n request.removeHeader('content-type')\n request.removeHeader('content-length')\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization')\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href)\n }\n\n request.emit('redirect')\n\n request.init()\n\n return true\n}\n\nexports.Redirect = Redirect\n"]},"metadata":{},"sourceType":"script"} |