// $Id$
// // @ts-check
import { cnObject } from "./../infohub/cnObject.js"
"use strict";
/**
*
* @category Tools
*
* @classdesc Helper class for response of Api calls.
*
* @property {number} status Status code like HTTP status codes
* @property {*} data Payload
* @property {string|null} message Human readable status (optional)
*
*/
export class ApiResponse {
#_statuscode = null;
#_responsedata = null;
#_message = null;
/**
*
* @param {*} status
* @param {*} responsedata
* @param {string|null} message
*/
constructor(status, responsedata, message = null) {
this.#_statuscode = status;
this.#_responsedata = responsedata;
this.#_message = message;
}
/**
*
* @returns {number} Status Code
*/
getStatus() {
return this.#_statuscode;
}
/**
* Return 'status' as property
*
* @example
* ...
*
* if ( obj.status < 300 ) {
* ...
* }
*
* @type {number}
*
*/
get status() {
return this.#_statuscode ?? 500 ;
}
/**
*
* @returns {object} Response as JSON object
*/
getData() {
return this.#_responsedata;
}
/**
* Return status a property
*/
get data() {
return this.#_responsedata;
}
/**
*
* @returns {string|null} uman readable status
*/
getMessage() {
return this.#_message ?? '';
}
/**
*
* Return 'message' as property.
*
* @see getMessage()
*
*/
get message() {
return this.#_message;
}
/**
*
* Dump to console.log
*
* @param {*} prefix
*/
dump( prefix = '' ) {
let m = this.#_message || '';
console.log(`${prefix}status : ${this.#_statuscode}`);
console.log(`${prefix}message : ${m}`);
if (this.#_responsedata instanceof cnObject) {
console.log( `${prefix}data: [`)
this.#_responsedata.dump();
console.log( `] data`)
} else {
let d = JSON.stringify(this.#_responsedata, null, 2);
console.log(`${prefix}data : ${d}`);
}
}
}
Source