@cabin-interactive/qrz-api-client
Version:
A TypeScript wrapper for the QRZ.com API
116 lines (115 loc) • 3.81 kB
JavaScript
// Base error class for all Qrz-related errors
export class QrzError extends Error {
constructor(message) {
super(message);
this.name = 'QrzError';
Object.setPrototypeOf(this, QrzError.prototype);
}
}
// Authentication-related errors
export class QrzAuthError extends QrzError {
constructor(message = 'Authentication failed') {
super(message);
this.name = 'QrzAuthError';
Object.setPrototypeOf(this, QrzAuthError.prototype);
}
}
// Session-related errors
export class QrzSessionError extends QrzError {
constructor(message = 'Invalid or expired session') {
super(message);
this.name = 'QrzSessionError';
Object.setPrototypeOf(this, QrzSessionError.prototype);
}
}
// Rate limiting errors
export class QrzRateLimitError extends QrzError {
constructor(message = 'Rate limit exceeded', retryAfter) {
super(message);
this.retryAfter = retryAfter;
this.name = 'QrzRateLimitError';
Object.setPrototypeOf(this, QrzRateLimitError.prototype);
}
}
// Network-related errors
export class QrzNetworkError extends QrzError {
constructor(message, statusCode, originalError) {
super(message);
this.statusCode = statusCode;
this.originalError = originalError;
this.name = 'QrzNetworkError';
Object.setPrototypeOf(this, QrzNetworkError.prototype);
}
}
// Not found errors
export class QrzNotFoundError extends QrzError {
constructor(message = 'Resource not found', callsign) {
super(message);
this.callsign = callsign;
this.name = 'QrzNotFoundError';
Object.setPrototypeOf(this, QrzNotFoundError.prototype);
}
}
// ACTION was not recognized by the QRZ API
export class QrzUnknownActionError extends QrzError {
constructor(message, command) {
super(message);
this.command = command;
this.name = 'QrzUnrecognizedCommandError';
Object.setPrototypeOf(this, QrzUnknownActionError.prototype);
}
}
/**
* Thrown when a QSO is attempted with a station callsign that doesn't match the logbook
*/
export class QrzQsoStationCallsignError extends QrzError {
constructor(message, providedCallsign, expectedCallsign) {
super(message);
this.providedCallsign = providedCallsign;
this.expectedCallsign = expectedCallsign;
this.name = 'QrzQsoStationCallsignError';
Object.setPrototypeOf(this, QrzQsoStationCallsignError.prototype);
}
}
/**
* Thrown when a QSO date is outside the allowed range for the logbook
*/
export class QrzQsoDateRangeError extends QrzError {
constructor(message, providedDate) {
super(message);
this.providedDate = providedDate;
this.name = 'QrzQsoDateRangeError';
Object.setPrototypeOf(this, QrzQsoDateRangeError.prototype);
}
}
/**
* Thrown when the ADIF record format is invalid
*/
export class QrzAdifFormatError extends QrzError {
constructor(message) {
super(message);
this.name = 'QrzAdifFormatError';
Object.setPrototypeOf(this, QrzAdifFormatError.prototype);
}
}
/**
* Thrown when input validation fails for QRZ API requests
*/
export class QrzQsoValidationError extends QrzError {
constructor(message, field, value) {
super(message);
this.field = field;
this.value = value;
this.name = 'QrzQsoValidationError';
Object.setPrototypeOf(this, QrzQsoValidationError.prototype);
}
}
export class QrzDuplicateQsoError extends QrzError {
constructor(message, field, value) {
super(message);
this.field = field;
this.value = value;
this.name = 'QrzDuplicateQsoError';
Object.setPrototypeOf(this, QrzDuplicateQsoError.prototype);
}
}