Skip to content

Commit bfa0f66

Browse files
committed
normalize service slugs in API data handling and update legacy conversion logic
1 parent abb42d1 commit bfa0f66

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

app/apis/[providerSlug]/[serviceSlug]/page.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ function stripMarkdown(markdown: string): string {
2424
.replace(/(\n\s*){2,}/g, "\n\n")
2525
.replace(/^\s+|\s+$/g, "");
2626
}
27+
28+
29+
export function normalizeServiceSlug(service: string): string {
30+
return service
31+
.toLowerCase()
32+
.replace(/[\(\)]/g, "")
33+
.replace(/--+/g, "-")
34+
.replace(/^-+|-+$/g, "");
35+
}
36+
2737
export function getData(
2838
providerSlug: string,
2939
serviceSlug?: string | null
@@ -38,6 +48,7 @@ export function getData(
3848
return processApiData(targetKey, apiList[targetKey]);
3949
}
4050

51+
4152
for (const key in apiList) {
4253
if (
4354
apiList.hasOwnProperty(key) &&
@@ -47,6 +58,23 @@ export function getData(
4758
}
4859
}
4960

61+
62+
if (serviceSlug) {
63+
for (const key in apiList) {
64+
if (apiList.hasOwnProperty(key)) {
65+
const [keyProvider, keyService] = key.split(":");
66+
if (
67+
keyProvider &&
68+
keyService &&
69+
keyProvider.toLowerCase() === providerSlug.toLowerCase() &&
70+
normalizeServiceSlug(keyService) === serviceSlug.toLowerCase()
71+
) {
72+
return processApiData(key, apiList[key]);
73+
}
74+
}
75+
}
76+
}
77+
5078
console.warn(
5179
`No API found for provider: ${providerSlug}, service: ${serviceSlug}`
5280
);
@@ -133,7 +161,8 @@ export async function generateStaticParams() {
133161

134162
if (service) {
135163
const providerSlug = provider.toLowerCase();
136-
const serviceSlug = service.toLowerCase();
164+
165+
const serviceSlug = normalizeServiceSlug(service);
137166

138167
params.push({
139168
providerSlug,

next.config.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ const nextConfig: NextConfig = {
4545
.replace(/^-+|-+$/g, "");
4646
};
4747

48-
// Converts service name to legacy format (underscores become dashes)
48+
// Converts service name to legacy format (all special chars become dashes)
4949
// e.g., "twilio_media_v1" -> "twilio-media-v1"
50+
// e.g., "subscriptions-api-(v2)" -> "subscriptions-api-v2"
5051
const toLegacyServiceSlug = (service: string) => {
5152
return service
5253
.toLowerCase()
@@ -56,10 +57,15 @@ const nextConfig: NextConfig = {
5657
.replace(/^-+|-+$/g, "");
5758
};
5859

59-
// Preserves the original service slug format (keeps underscores)
60+
// Normalizes service slug for current URLs (removes parentheses, preserves underscores)
6061
// e.g., "twilio_media_v1" -> "twilio_media_v1"
62+
// e.g., "subscriptions-api-(v2)" -> "subscriptions-api-v2"
6163
const toCurrentServiceSlug = (service: string) => {
62-
return service.toLowerCase();
64+
return service
65+
.toLowerCase()
66+
.replace(/[\(\)]/g, "")
67+
.replace(/--+/g, "-")
68+
.replace(/^-+|-+$/g, "");
6369
};
6470

6571
for (const key in list) {

0 commit comments

Comments
 (0)