feat: add get apps method

This commit is contained in:
StevanFreeborn
2023-01-27 22:53:14 -06:00
parent fa1a952cb2
commit 5a6c5094e9
7 changed files with 106 additions and 11 deletions
+22 -6
View File
@@ -4,6 +4,9 @@ import { ArgumentValidator } from './models/ArgumentValidator';
import { EndpointFactory } from './models/EndpointFactory';
import { ApiResponseFactory } from './models/ApiResponseFactory';
import { ApiResponse } from './models/ApiResponse';
import { App } from './models/App';
import { PagingRequest } from './models/PagingRequest';
import { GetPagedAppsResponse } from './models/GetPagedAppsResponse';
/**
* @class OnspringClient - A client that can communicate with the Onspring API.
@@ -51,12 +54,25 @@ export class OnspringClient {
const endpoint = EndpointFactory.getPingEndpoint(
this._client.defaults.baseURL
);
try {
const response = await this.get<ApiResponse<boolean>>(endpoint);
return response.isSuccessful;
} catch (error) {
return false;
}
const response = await this.get<ApiResponse<boolean>>(endpoint);
return response.isSuccessful;
}
/**
*
* @param pagingRequest - The paging request that will be used to get the apps.
* @returns
*/
public async getApps(
pagingRequest: PagingRequest = new PagingRequest(1, 50)
): Promise<ApiResponse<GetPagedAppsResponse>> {
const endpoint = EndpointFactory.getAppsEndpoint(
this._client.defaults.baseURL,
pagingRequest
);
return await this.get<GetPagedAppsResponse>(endpoint);
}
/**
+4 -2
View File
@@ -1,3 +1,5 @@
import { PagingRequest } from "./PagingRequest";
/**
* @class EndpointFactory - A factory class for creating endpoints.
*/
@@ -14,8 +16,8 @@ export class EndpointFactory {
* @param {string} baseUrl - The base url that will be used to create the apps endpoint.
* @returns {string} - The apps endpoint.
*/
public static getAppsEndpoint(baseUrl: string): string {
return `${baseUrl}/Apps`;
public static getAppsEndpoint(baseUrl: string, pagingRequest: PagingRequest): string {
return `${baseUrl}/Apps?pageSize=${pagingRequest.pageSize}&pageNumber=${pagingRequest.pageNumber}`;
}
/**
+8
View File
@@ -0,0 +1,8 @@
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);
}
}
+13
View File
@@ -0,0 +1,13 @@
export class PagedResponse<T> {
public items: T[];
public pageNumber: number;
public pageSize: number;
public totalCount: number;
constructor(items: T[], pageNumber: number, pageSize: number, totalCount: number) {
this.items = items;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
this.totalCount = totalCount;
}
}