47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { RequestCookie } from 'next/dist/compiled/@edge-runtime/cookies';
|
|
import { NextRequest } from 'next/server';
|
|
import { z } from 'zod';
|
|
|
|
import oriyoClient from '@/app/api-utlities/clients/oriyo.client';
|
|
import { getParams } from '@/app/api-utlities/utilities/get-params';
|
|
|
|
import { authorizationMiddleware } from '../../middlewares/auth.middleware';
|
|
import { validationErrorHandler } from '../../middlewares/error-handler.middleware';
|
|
|
|
const validatedSchema = z.object({
|
|
start_date: z.string().optional(),
|
|
end_date: z.string().optional(),
|
|
limit: z.coerce.number(),
|
|
page: z.coerce.number(),
|
|
});
|
|
|
|
const routeHandler = async (req: NextRequest, requestCookie: RequestCookie) => {
|
|
const validatedRequest = validatedSchema.parse(getParams(req));
|
|
|
|
const { card_id, token } = JSON.parse(requestCookie.value);
|
|
|
|
const oriyoResponse = await oriyoClient.get('/bonuscardts', {
|
|
params: {
|
|
card_id,
|
|
token,
|
|
limit: validatedRequest.limit,
|
|
page: validatedRequest.page,
|
|
type: 'bonus',
|
|
sort: 'id',
|
|
direction: 'desc',
|
|
start_date: validatedRequest.start_date,
|
|
end_date: validatedRequest.end_date,
|
|
},
|
|
});
|
|
|
|
if (oriyoResponse.data.error) throw oriyoResponse.data;
|
|
|
|
return new Response(JSON.stringify(oriyoResponse.data), {
|
|
headers: { 'Content-Type': 'application/json' },
|
|
});
|
|
};
|
|
|
|
export const GET = validationErrorHandler(
|
|
authorizationMiddleware(routeHandler, 'bonus__token'),
|
|
);
|