From b438fc27548938e0a4776a53f5debd2638fe8aa0 Mon Sep 17 00:00:00 2001 From: Ady Beraud <102751374+ady-beraud@users.noreply.github.com> Date: Tue, 7 May 2024 09:35:54 +0300 Subject: [PATCH] Fix github stars endpoint (#5301) - Encapsulated GitHub star response in an object - Fixed rounding of Github stars to align with Github convention - Fixed CORS issue so that endpoint can be called from twenty.com and app.twenty.com Co-authored-by: Ady Beraud --- .../src/app/api/github-stars/route.tsx | 4 +-- packages/twenty-website/src/middleware.ts | 33 +++++++++++++++++++ .../src/shared-utils/formatNumberOfStars.ts | 2 +- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 packages/twenty-website/src/middleware.ts diff --git a/packages/twenty-website/src/app/api/github-stars/route.tsx b/packages/twenty-website/src/app/api/github-stars/route.tsx index 74ceb3124..39adfad7e 100644 --- a/packages/twenty-website/src/app/api/github-stars/route.tsx +++ b/packages/twenty-website/src/app/api/github-stars/route.tsx @@ -13,11 +13,11 @@ export async function GET() { desc(githubStarsModel.timestamp), ); - const formattedGithubNumberOfStars = formatNumberOfStars( + const githubNumberOfStars = formatNumberOfStars( githubStars[0].numberOfStars, ); - return Response.json(formattedGithubNumberOfStars); + return Response.json({ githubNumberOfStars }); } catch (error: any) { return new Response(`Github stars error: ${error?.message}`, { status: 500, diff --git a/packages/twenty-website/src/middleware.ts b/packages/twenty-website/src/middleware.ts new file mode 100644 index 000000000..9fa6c5205 --- /dev/null +++ b/packages/twenty-website/src/middleware.ts @@ -0,0 +1,33 @@ +import { NextResponse } from 'next/server'; + +const allowedOrigins = [ + 'http://localhost:3000', + 'https://app.twenty.com', + 'https://twenty.com', +]; + +export function middleware(req: any) { + const res = NextResponse.next(); + + const origin = req.headers.get('origin'); + + if (allowedOrigins.includes(origin)) { + res.headers.append('Access-Control-Allow-Origin', origin); + } + + res.headers.append('Access-Control-Allow-Credentials', 'true'); + res.headers.append( + 'Access-Control-Allow-Methods', + 'GET,DELETE,PATCH,POST,PUT', + ); + res.headers.append( + 'Access-Control-Allow-Headers', + 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version', + ); + + return res; +} + +export const config = { + matcher: '/api/:path*', +}; diff --git a/packages/twenty-website/src/shared-utils/formatNumberOfStars.ts b/packages/twenty-website/src/shared-utils/formatNumberOfStars.ts index a9fad93d2..4adceff4d 100644 --- a/packages/twenty-website/src/shared-utils/formatNumberOfStars.ts +++ b/packages/twenty-website/src/shared-utils/formatNumberOfStars.ts @@ -1,3 +1,3 @@ export const formatNumberOfStars = (numberOfStars: number) => { - return Math.floor(numberOfStars / 100) / 10 + 'k'; + return Math.ceil(numberOfStars / 100) / 10 + 'k'; };