1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 'use strict';
- const urlLib = require('url');
- const http = require('http');
- const PCancelable = require('p-cancelable');
- const is = require('@sindresorhus/is');
- class GotError extends Error {
- constructor(message, error, opts) {
- super(message);
- Error.captureStackTrace(this, this.constructor);
- this.name = 'GotError';
- if (!is.undefined(error.code)) {
- this.code = error.code;
- }
- Object.assign(this, {
- host: opts.host,
- hostname: opts.hostname,
- method: opts.method,
- path: opts.path,
- protocol: opts.protocol,
- url: opts.href
- });
- }
- }
- module.exports.GotError = GotError;
- module.exports.CacheError = class extends GotError {
- constructor(error, opts) {
- super(error.message, error, opts);
- this.name = 'CacheError';
- }
- };
- module.exports.RequestError = class extends GotError {
- constructor(error, opts) {
- super(error.message, error, opts);
- this.name = 'RequestError';
- }
- };
- module.exports.ReadError = class extends GotError {
- constructor(error, opts) {
- super(error.message, error, opts);
- this.name = 'ReadError';
- }
- };
- module.exports.ParseError = class extends GotError {
- constructor(error, statusCode, opts, data) {
- super(`${error.message} in "${urlLib.format(opts)}": \n${data.slice(0, 77)}...`, error, opts);
- this.name = 'ParseError';
- this.statusCode = statusCode;
- this.statusMessage = http.STATUS_CODES[this.statusCode];
- }
- };
- module.exports.HTTPError = class extends GotError {
- constructor(statusCode, statusMessage, headers, opts) {
- if (statusMessage) {
- statusMessage = statusMessage.replace(/\r?\n/g, ' ').trim();
- } else {
- statusMessage = http.STATUS_CODES[statusCode];
- }
- super(`Response code ${statusCode} (${statusMessage})`, {}, opts);
- this.name = 'HTTPError';
- this.statusCode = statusCode;
- this.statusMessage = statusMessage;
- this.headers = headers;
- }
- };
- module.exports.MaxRedirectsError = class extends GotError {
- constructor(statusCode, redirectUrls, opts) {
- super('Redirected 10 times. Aborting.', {}, opts);
- this.name = 'MaxRedirectsError';
- this.statusCode = statusCode;
- this.statusMessage = http.STATUS_CODES[this.statusCode];
- this.redirectUrls = redirectUrls;
- }
- };
- module.exports.UnsupportedProtocolError = class extends GotError {
- constructor(opts) {
- super(`Unsupported protocol "${opts.protocol}"`, {}, opts);
- this.name = 'UnsupportedProtocolError';
- }
- };
- module.exports.CancelError = PCancelable.CancelError;
|