@r/api-client
Version:
node and browser reddit api library
39 lines (31 loc) • 1.11 kB
JavaScript
import FakeError from './error';
export class DisconnectedError extends FakeError {
constructor(error, url) {
super(error);
Object.assign(this, error);
this.message = `URL ${url} not reachable. You are probably disconnected from the internet.`;
}
}
const codeMap = {
ECONNREFUSED: DisconnectedError,
ENOTFOUND: DisconnectedError,
};
export default class ResponseError extends FakeError {
constructor (error, url) {
// Make sure an error and url were actually passed in
if (!error) { throw new Error('No error passed to ResponseError'); }
if (!url) { throw new Error('No url passed to ResponseError'); }
// Check if it's a disconnection error or something else weird
if (error.code && error.syscall) {
return ResponseError.getSystemLevelError(error, url);
}
super(error);
Object.assign(this, error);
this.name = 'ResponseError';
this.message = `Status ${error.status} returned from API request to ${url}`;
}
static getSystemLevelError (error, url) {
const E = codeMap[error.code] || Error;
return new E(error, url);
}
}