|
-
- export namespace ServiceHelper {
- export class GenericHelper {
- public static deepClone(obj: Object) {
- return JSON.parse(JSON.stringify(obj));
- }
- }
- export const SPOTIFY_STAUS_CODES = {
- OK: 200,
- CREATED: 201,
- ACCEPTED: 202,
- NO_CONTENT: 204,
- NOT_MODIFIED: 304,
- BAD_REQUEST: 400,
- UNAUTHORIZED: 401,
- FORBIDDEN: 403,
- NOT_FOUND: 404,
- TOO_MANY: 429,
- INTERNAL: 500,
- BAD_GATEWAY: 502,
- SERVICE_UNAVAILABLE: 503,
- }
- export class PaginationOptions { limit: number; offset: number; total: number; current: number; };
- export class OfssetHelper {
- /**
- * Exptract Offset from URL.
- *
- * @param url url with offset GET Param
- * @returns offset if found if not -1
- */
- public getNextOffsetFromUrl(url: string): number {
- const extractOffsetRegex = /(?:offset=)(\d+)/;
- const offset = extractOffsetRegex.exec(url);
- if (offset[1]) {
- return parseInt(offset[1]);
- }
- return -1
-
- }
- public getNextOffset(responseBody: PaginationOptions) {
- const maxOffset = responseBody.total - responseBody.limit;
- if (
- responseBody.total <= responseBody.limit ||
- responseBody.offset >= responseBody.limit ||
- responseBody.offset >= maxOffset
- ) {
- return -1;
- }
- if (responseBody.offset < 0) {
- throw new Error("offset can't be smaller than 0!");
- }
- // if limit + current offset not overflows maxOffset return
- if ((responseBody.limit + responseBody.offset) <= maxOffset) {
- return responseBody.limit + responseBody.offset;
- }
- // return the rest
- return responseBody.limit % responseBody.total;
- }
- }
- }
|