| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { NextRequest, NextResponse } from "next/server";
- import { bagistoFetch } from "@/utils/bagisto";
- import {
- CREATE_ADD_PRODUCT_IN_CART,
- REMOVE_CART_ITEM,
- UPDATE_CART_ITEM,
- GET_CART_ITEM,
- CREATE_CART_TOKEN,
- CREATE_MERGE_CART,
- GET_CHECKOUT_ADDRESSES,
- GET_CHECKOUT_SHIPPING_RATES,
- GET_CHECKOUT_PAYMENT_METHODS,
- CREATE_CHECKOUT_ADDRESS,
- CREATE_CHECKOUT_SHIPPING_METHODS,
- CREATE_CHECKOUT_PAYMENT_METHODS,
- CREATE_CHECKOUT_ORDER,
- // CREATE_PRODUCT_REVIEW,
- CREATE_PAYMENT_INITIATE,
- CREATE_SAVE_CHECKOUT_CART,
- GET_ORDER_DETAILS,
- CREATE_CANCEL_ORDER,
- // GET_PRODUCT_BY_URL_KEY,
- } from "@/graphql";
- const ALLOWED_OPERATIONS: Record<string, any> = {
- createAddProductInCart: CREATE_ADD_PRODUCT_IN_CART,
- RemoveCartItem: REMOVE_CART_ITEM,
- UpdateCartItem: UPDATE_CART_ITEM,
- GetCartItem: GET_CART_ITEM,
- CreateCart: CREATE_CART_TOKEN,
- createMergeCart: CREATE_MERGE_CART,
- collectionGetCheckoutAddresses: GET_CHECKOUT_ADDRESSES,
- CheckoutShippingRates: GET_CHECKOUT_SHIPPING_RATES,
- CheckoutPaymentMethods: GET_CHECKOUT_PAYMENT_METHODS,
- createCheckoutAddress: CREATE_CHECKOUT_ADDRESS,
- CreateCheckoutShippingMethod: CREATE_CHECKOUT_SHIPPING_METHODS,
- CreateCheckoutPaymentMethod: CREATE_CHECKOUT_PAYMENT_METHODS,
- CreateCheckoutOrder: CREATE_CHECKOUT_ORDER,
- // CreateProductReview: CREATE_PRODUCT_REVIEW,
- CreatePaymentInitiate: CREATE_PAYMENT_INITIATE, // 创建订单
- CreateSaveCheckoutCart: CREATE_SAVE_CHECKOUT_CART,
- GetOrderDetails: GET_ORDER_DETAILS, // 获取订单详情
- CreateCancelOrder: CREATE_CANCEL_ORDER
- };
- // const QUERY_OPERATIONS: Record<string, any> = {
- // GetProductById: GET_PRODUCT_BY_URL_KEY,
- // }
- interface FetchOption {
- query: string;
- variables?: Record<string, any>;
- cache?: RequestCache;
- takeAuthorization?: boolean;
- operationName?: string;
- }
- // 需要authorization的operation
- function authorizationOperations(body: Record<string, any>): FetchOption {
- const { operationName, variables } = body;
- const query = ALLOWED_OPERATIONS[operationName];
- const finalVariables = variables;
-
- return {
- query,
- variables: finalVariables,
- takeAuthorization: true,
- cache: "no-store",
- // operationName
- }
- }
- // 不需要authorization的operation
- function notAuthorizationOperations(body: Record<string, any>): FetchOption {
- const { query, variables } = body;
- // const query = bodyGraphqlQuery;
- return {
- query,
- variables,
- cache: "no-store",
- takeAuthorization: false,
- // operationName
- }
- }
- export async function POST(req: NextRequest) {
- try {
- const body = await req.json();
- const { operationName } = body;
- if (!operationName) {
- return NextResponse.json(
- { message: "Invalid or unauthorized operation: " + (operationName || "missing") },
- { status: 400 }
- );
- }
- let fetchOption: FetchOption = notAuthorizationOperations(body);
- if(ALLOWED_OPERATIONS[operationName]) {
- fetchOption = authorizationOperations(body);
- }
-
- const response = await bagistoFetch<any>(fetchOption);
- console.log('bagistoFetch response ------ ', response);
- return NextResponse.json(response.body,{
- status: response.status
- });
- } catch (error) {
- console.log('bagistoFetch ERROR ------ ', error);
- return NextResponse.json(
- {
- errors:[
- {
- message: error instanceof Error ? error.message : "Network error"
- }
- ],
- data:null
- },
- { status:500 }
- );
- }
- }
|