feat: fetch data for charts

This commit is contained in:
Ephraim Atta-Duncan
2024-10-24 10:32:18 +00:00
parent d80634e0d0
commit 364f9894b0
8 changed files with 220 additions and 2 deletions
+36
View File
@@ -0,0 +1,36 @@
import type { NextRequest } from 'next/server';
import cors from '@/lib/cors';
const paths = [
{ path: '/total-prs', description: 'Total GitHub Forks' },
{ path: '/total-stars', description: 'Total GitHub Stars' },
{ path: '/total-forks', description: 'Total GitHub Forks' },
{ path: '/total-issues', description: 'Total GitHub Issues' },
];
export function GET(request: NextRequest) {
const url = request.nextUrl.toString();
const apis = paths.map(({ path, description }) => {
return { path: url + path, description };
});
return cors(
request,
new Response(JSON.stringify(apis), {
status: 200,
headers: {
'content-type': 'application/json',
},
}),
);
}
export function OPTIONS(request: Request) {
return cors(
request,
new Response(null, {
status: 204,
}),
);
}
@@ -0,0 +1,27 @@
import cors from '@/lib/cors';
import { transformRepoStats } from '@/lib/transform-repo-stats';
export async function GET(request: Request) {
const res = await fetch('https://stargrazer-live.onrender.com/api/stats');
const data = await res.json();
const transformedData = transformRepoStats(data, 'forks');
return cors(
request,
new Response(JSON.stringify({ 'total-forks': transformedData }), {
status: 200,
headers: {
'content-type': 'application/json',
},
}),
);
}
export function OPTIONS(request: Request) {
return cors(
request,
new Response(null, {
status: 204,
}),
);
}
@@ -0,0 +1,27 @@
import cors from '@/lib/cors';
import { transformRepoStats } from '@/lib/transform-repo-stats';
export async function GET(request: Request) {
const res = await fetch('https://stargrazer-live.onrender.com/api/stats');
const data = await res.json();
const transformedData = transformRepoStats(data, 'openIssues');
return cors(
request,
new Response(JSON.stringify({ 'total-issues': transformedData }), {
status: 200,
headers: {
'content-type': 'application/json',
},
}),
);
}
export function OPTIONS(request: Request) {
return cors(
request,
new Response(null, {
status: 204,
}),
);
}
@@ -0,0 +1,27 @@
import cors from '@/lib/cors';
import { transformRepoStats } from '@/lib/transform-repo-stats';
export async function GET(request: Request) {
const res = await fetch('https://stargrazer-live.onrender.com/api/stats');
const data = await res.json();
const transformedData = transformRepoStats(data, 'stars');
return cors(
request,
new Response(JSON.stringify({ 'total-stars': transformedData }), {
status: 200,
headers: {
'content-type': 'application/json',
},
}),
);
}
export function OPTIONS(request: Request) {
return cors(
request,
new Response(null, {
status: 204,
}),
);
}
@@ -0,0 +1,27 @@
import cors from '@/lib/cors';
import { transformRepoStats } from '@/lib/transform-repo-stats';
export async function GET(request: Request) {
const res = await fetch('https://stargrazer-live.onrender.com/api/stats');
const data = await res.json();
const transformedData = transformRepoStats(data, 'stars');
return cors(
request,
new Response(JSON.stringify({ 'total-stars': transformedData }), {
status: 200,
headers: {
'content-type': 'application/json',
},
}),
);
}
export function OPTIONS(request: Request) {
return cors(
request,
new Response(null, {
status: 204,
}),
);
}
+4 -1
View File
@@ -2,7 +2,10 @@ import type { NextRequest } from 'next/server';
import cors from '@/lib/cors';
const paths = [{ path: 'github', description: 'GitHub Data' }];
const paths = [
{ path: 'github', description: 'GitHub Data' },
{ path: 'community', description: 'Community Data' },
];
export function GET(request: NextRequest) {
const url = request.nextUrl.toString();