shared/common/api-response.ts
ApiResponce is parent class for HTTP API responses with some usefull wrappers defining reply protocol
Properties |
|
Methods |
Protected Readonly logger |
Default value : new Logger(ApiResponse.name)
|
Defined in shared/common/api-response.ts:8
|
logger object |
catchAndRespondWithError | ||||
catchAndRespondWithError(error)
|
||||
Defined in shared/common/api-response.ts:64
|
||||
Error response method with additional trace details about error @param message {any} - error message @param code {any} - error code @return {AbstractApiReply} - error reply object
Parameters :
Returns :
literal type
|
responseError | |||||||||
responseError(message, code)
|
|||||||||
Defined in shared/common/api-response.ts:37
|
|||||||||
Error response method @param message {any} - error message @param code {any} - error code @return {AbstractApiReply} - error reply object
Parameters :
Returns :
literal type
|
responseSuccess | ||||||||
responseSuccess(data: TResponse)
|
||||||||
Defined in shared/common/api-response.ts:17
|
||||||||
Type parameters :
|
||||||||
Success response method @param data {any} - reply data @return {AbstractApiReply} - success reply object
Parameters :
Returns :
literal type
|
responseSuccessOnly |
responseSuccessOnly()
|
Defined in shared/common/api-response.ts:95
|
Simplest success response without any data method @return {AbstractApiReply} - success reply object
Returns :
literal type
|
import { Logger } from '@nestjs/common';
import { LooseObject } from './types';
/**
* ApiResponce is parent class for HTTP API responses with some usefull wrappers defining reply protocol
*/
export class ApiResponse {
/** logger object */
protected readonly logger = new Logger(ApiResponse.name);
/**
* Success response method
*
* @param data {any} - reply data
*
* @return {AbstractApiReply} - success reply object
*/
responseSuccess<TResponse = LooseObject>(
data: TResponse
): {
success: boolean;
data: TResponse;
} {
return {
success: true,
data,
};
}
/**
* Error response method
*
* @param message {any} - error message
* @param code {any} - error code
*
* @return {AbstractApiReply} - error reply object
*/
responseError(
message,
code,
): {
success: boolean;
error: {
code: any;
message: any;
};
} {
return {
success: false,
error: {
code,
message,
},
};
}
/**
* Error response method with additional trace details about error
*
* @param message {any} - error message
* @param code {any} - error code
*
* @return {AbstractApiReply} - error reply object
*/
catchAndRespondWithError(
error,
): {
success: boolean;
error: {
code: any;
message: any;
};
} {
const stack = new Error().stack || '';
this.logger.error('error stack', stack.split('\n').join(' -- '));
if (
typeof error.getResponse === 'function' &&
typeof error.getStatus === 'function'
) {
this.logger.error(
`Caught error: ${error.getStatus()} - ${error.getResponse()}`,
);
return this.responseError(error.getResponse(), error.getStatus());
}
const message = `Caught error: ${error}`;
this.logger.error(message);
return this.responseError(message, 500);
}
/**
* Simplest success response without any data method
*
* @return {AbstractApiReply} - success reply object
*/
responseSuccessOnly(): {
success: boolean;
} {
return {
success: true,
};
}
}