fix: work through how i want to return the api response with the data property being of the right type.
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import { App } from "./App";
|
||||
import { GetPagedAppsResponse } from "./GetPagedAppsResponse";
|
||||
|
||||
/**
|
||||
* @class ApiResponse - A generic response object for API requests.
|
||||
*/
|
||||
@@ -5,22 +8,22 @@ export class ApiResponse<T> {
|
||||
/**
|
||||
* @property {number} statusCode - The status code of the response.
|
||||
*/
|
||||
readonly statusCode: number;
|
||||
public statusCode: number;
|
||||
|
||||
/**
|
||||
* @property {boolean} isSuccessful - True if the status code is less than 400; otherwise, false.
|
||||
*/
|
||||
readonly isSuccessful: boolean;
|
||||
public isSuccessful: boolean;
|
||||
|
||||
/**
|
||||
* @property {string} message - The message of the response.
|
||||
*/
|
||||
readonly message: string;
|
||||
public message: string;
|
||||
|
||||
/**
|
||||
* @property {T} data - The data of the response.
|
||||
*/
|
||||
readonly data: T;
|
||||
public data: T;
|
||||
|
||||
/**
|
||||
* @constructor - Creates a new instance of the ApiResponse class.
|
||||
@@ -35,4 +38,25 @@ export class ApiResponse<T> {
|
||||
this.message = message;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public AsGetPagedAppsResponseType(): ApiResponse<GetPagedAppsResponse> {
|
||||
var apiResponse = this as ApiResponse<any>;
|
||||
var apps = apiResponse.data.items.map((item: any) => {
|
||||
return new App(item.href, item.id, item.name);
|
||||
});
|
||||
|
||||
var getAppsPagedResponse = new GetPagedAppsResponse(
|
||||
apps,
|
||||
apiResponse.data.pageNumber,
|
||||
apiResponse.data.pageSize,
|
||||
apiResponse.data.totalPages,
|
||||
apiResponse.data.totalRecords
|
||||
);
|
||||
|
||||
return new ApiResponse<GetPagedAppsResponse>(
|
||||
apiResponse.statusCode,
|
||||
apiResponse.message,
|
||||
getAppsPagedResponse
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,7 @@ export class ApiResponseFactory {
|
||||
const message = this.TryToGetMessage(response);
|
||||
|
||||
if (this.isSuccessStatusCode(response.status) === true) {
|
||||
const data = response.data as T;
|
||||
return new ApiResponse<T>(response.status, message, data);
|
||||
return new ApiResponse<T>(response.status, message, response.data);
|
||||
}
|
||||
|
||||
return new ApiResponse<T>(response.status, message, null);
|
||||
|
||||
@@ -2,7 +2,7 @@ import { PagedResponse } from "./PagedResponse";
|
||||
import { App } from "./App";
|
||||
|
||||
export class GetPagedAppsResponse extends PagedResponse<App> {
|
||||
constructor(items: App[], pageNumber: number, pageSize: number, totalCount: number) {
|
||||
super(items, pageNumber, pageSize, totalCount);
|
||||
constructor(items: App[], pageNumber: number, pageSize: number, totalPages: number, totalRecords: number) {
|
||||
super(items, pageNumber, pageSize, totalPages, totalRecords);
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,14 @@ export class PagedResponse<T> {
|
||||
public items: T[];
|
||||
public pageNumber: number;
|
||||
public pageSize: number;
|
||||
public totalCount: number;
|
||||
public totalPages: number;
|
||||
public totalRecords: number;
|
||||
|
||||
constructor(items: T[], pageNumber: number, pageSize: number, totalCount: number) {
|
||||
constructor(items: T[], pageNumber: number, pageSize: number, totalPages: number, totalRecords: number) {
|
||||
this.items = items;
|
||||
this.pageNumber = pageNumber;
|
||||
this.pageSize = pageSize;
|
||||
this.totalCount = totalCount;
|
||||
this.totalPages = totalPages;
|
||||
this.totalRecords = totalRecords;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user