Skip to content

Commit 0a3cea5

Browse files
committed
feat: enhance API configuration and request service with improved environment variable handling and SSR check utility
1 parent 71110a4 commit 0a3cea5

File tree

4 files changed

+42
-33
lines changed

4 files changed

+42
-33
lines changed

src/config/index.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
export const config = {
22
api: {
3+
/*
4+
Example:
5+
API_PROTOCOL=http
6+
API_HOST=localhost
7+
API_PORT=1234
8+
API_PREFIX=/api
9+
API_VERSION=/v2
10+
*/
311
internal: {
4-
protocol: process.env.API_PROTOCOL || 'http',
5-
host: process.env.API_HOST || 'localhost',
6-
port: process.env.API_PORT || '1234',
7-
prefix: process.env.API_PREFIX || '/api',
8-
version: process.env.API_VERSION || '/v2'
12+
protocol: process.env.API_PROTOCOL,
13+
host: process.env.API_HOST,
14+
port: process.env.API_PORT,
15+
prefix: process.env.API_PREFIX,
16+
version: process.env.API_VERSION
917
},
1018
external: {
11-
protocol: process.env.NEXT_PUBLIC_API_PROTOCOL || 'http',
12-
host: process.env.NEXT_PUBLIC_API_HOST || 'localhost',
13-
port: process.env.NEXT_PUBLIC_API_PORT || '1234',
14-
prefix: process.env.NEXT_PUBLIC_API_PREFIX || '/api',
15-
version: process.env.NEXT_PUBLIC_API_VERSION || '/v2'
19+
protocol: process.env.NEXT_PUBLIC_API_PROTOCOL,
20+
host: process.env.NEXT_PUBLIC_API_HOST,
21+
port: process.env.NEXT_PUBLIC_API_PORT,
22+
prefix: process.env.NEXT_PUBLIC_API_PREFIX,
23+
version: process.env.NEXT_PUBLIC_API_VERSION
1624
}
1725
}
1826
};

src/factories/apiRequestService.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ import { config } from "../config";
33

44
export function getSSRApiRequestService(jwt?: string | null): ApiRequestService {
55
return new ApiRequestService({
6-
protocol: config.api.internal.protocol,
7-
host: config.api.internal.host,
8-
port: config.api.internal.port,
9-
prefix: config.api.internal.prefix,
10-
version: config.api.internal.version,
6+
protocol: config.api.internal.protocol || '',
7+
host: config.api.internal.host || '',
8+
port: config.api.internal.port || '',
9+
prefix: config.api.internal.prefix || '',
10+
version: config.api.internal.version || '',
1111
...(jwt ? { jwt } : {})
1212
});
1313
}
1414

1515
export const apiRequestService = new ApiRequestService({
16-
protocol: config.api.external.protocol,
17-
host: config.api.external.host,
18-
port: config.api.external.port,
19-
prefix: config.api.external.prefix,
20-
version: config.api.external.version
16+
protocol: config.api.external.protocol || '',
17+
host: config.api.external.host || '',
18+
port: config.api.external.port || '',
19+
prefix: config.api.external.prefix || '',
20+
version: config.api.external.version || ''
2121
});

src/utils/auth/ssrAuth.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { cookies } from 'next/headers';
2-
import { apiRequestService, getSSRApiRequestService } from '../../factories/apiRequestService';
32
import { DTOAccount } from 'podverse-helpers';
3+
import { getSSRApiRequestService } from '../../factories/apiRequestService';
44

55
export async function getSSRJwtFromCookies(): Promise<string | undefined> {
66
const cookieStore = await cookies();
@@ -25,17 +25,15 @@ export async function getSSRLoggedInAccount(): Promise<DTOAccount | null> {
2525

2626
export async function getSSRAuthService(): Promise<{ isValidAuthSession: boolean; apiRequestService: typeof apiRequestService }> {
2727
const jwt = await getSSRJwtFromCookies();
28-
29-
if (!jwt) {
30-
return { isValidAuthSession: false, apiRequestService: apiRequestService };
31-
}
32-
33-
const ssrApiRequestService = getSSRApiRequestService(jwt);
34-
35-
try {
36-
await ssrApiRequestService.reqAuthCheckSession();
37-
return { isValidAuthSession: true, apiRequestService: ssrApiRequestService };
38-
} catch {
39-
return { isValidAuthSession: false, apiRequestService: apiRequestService };
28+
const apiRequestService = getSSRApiRequestService(jwt);
29+
if (jwt) {
30+
try {
31+
await apiRequestService.reqAuthCheckSession();
32+
return { isValidAuthSession: true, apiRequestService };
33+
} catch {
34+
return { isValidAuthSession: false, apiRequestService };
35+
}
36+
} else {
37+
return { isValidAuthSession: false, apiRequestService };
4038
}
4139
}

src/utils/ssr.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const checkIfSSR = () => {
2+
return typeof window === "undefined";
3+
}

0 commit comments

Comments
 (0)