From 6ff95581f4359fe495da14d84d2e8a6f79ff3d2d Mon Sep 17 00:00:00 2001 From: jeffvli Date: Fri, 15 Jul 2022 17:53:51 -0700 Subject: [PATCH] Add utils --- src/server/types/types.ts | 2 ++ src/server/utils/get-image-url.ts | 19 +++++++++++++++++++ src/server/utils/get-success-response.ts | 3 ++- src/server/utils/index.ts | 2 ++ src/server/utils/random-string.ts | 10 ++++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/server/utils/get-image-url.ts create mode 100644 src/server/utils/random-string.ts diff --git a/src/server/types/types.ts b/src/server/types/types.ts index b88df57..7e0368c 100644 --- a/src/server/types/types.ts +++ b/src/server/types/types.ts @@ -95,6 +95,7 @@ export type OffsetPagination = { }; export type PaginationResponse = { + currentPage: number; nextPage: string; prevPage: string; startIndex: number; @@ -108,6 +109,7 @@ export type SuccessResponse = { export type PaginationItems = { limit: number; + page: number; startIndex: number; totalEntries: number; url: string; diff --git a/src/server/utils/get-image-url.ts b/src/server/utils/get-image-url.ts new file mode 100644 index 0000000..5f8c60a --- /dev/null +++ b/src/server/utils/get-image-url.ts @@ -0,0 +1,19 @@ +export const getImageUrl = ( + serverType: string, + baseUrl: string, + imageId: string, + token?: string +) => { + if (serverType === 'jellyfin') { + return ( + `${baseUrl}/Items` + + `/${imageId}` + + `/Images/Primary` + + '?fillHeight=200' + + `&fillWidth=200` + + '&quality=90' + ); + } + + return ''; +}; diff --git a/src/server/utils/get-success-response.ts b/src/server/utils/get-success-response.ts index 941e86d..55e4c4f 100644 --- a/src/server/utils/get-success-response.ts +++ b/src/server/utils/get-success-response.ts @@ -24,11 +24,12 @@ export const getSuccessResponse = (options: { let pagination; if (paginationItems) { - const { startIndex, totalEntries, limit, url } = paginationItems; + const { startIndex, totalEntries, limit, url, page } = paginationItems; const hasPrevPage = startIndex - limit >= 0; const hasNextPage = startIndex + limit <= totalEntries; pagination = { + currentPage: page, nextPage: hasNextPage ? getPaginationUrl(url, 'next') : null, prevPage: hasPrevPage ? getPaginationUrl(url, 'prev') : null, startIndex, diff --git a/src/server/utils/index.ts b/src/server/utils/index.ts index c002613..4015dae 100644 --- a/src/server/utils/index.ts +++ b/src/server/utils/index.ts @@ -10,3 +10,5 @@ export * from './is-json-string'; export * from './validate-request'; export * from './unique-array'; export * from './zod-validation'; +export * from './get-image-url'; +export * from './random-string'; diff --git a/src/server/utils/random-string.ts b/src/server/utils/random-string.ts new file mode 100644 index 0000000..67a9699 --- /dev/null +++ b/src/server/utils/random-string.ts @@ -0,0 +1,10 @@ +export const randomString = () => { + const charSet = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let string = ''; + for (let i = 0; i < 12; i += 1) { + const randomPoz = Math.floor(Math.random() * charSet.length); + string += charSet.substring(randomPoz, randomPoz + 1); + } + return string; +};