4
0
forked from crowetic/commerce

Allow API operations to be more customizable

This commit is contained in:
Luis Alvarez
2020-10-11 00:19:11 -05:00
parent 4c43278e67
commit 1c3714bf51
5 changed files with 149 additions and 26 deletions

View File

@@ -0,0 +1,29 @@
import { BigcommerceApiError } from '../../utils/errors'
import getCartCookie from '../../utils/get-cart-cookie'
import type { Cart, CartHandlers } from '..'
// Return current cart info
const getCart: CartHandlers['getCart'] = async ({
res,
body: { cartId },
config,
}) => {
let result: { data?: Cart } = {}
try {
result = await config.storeApiFetch(
`/v3/carts/${cartId}?include=redirect_urls`
)
} catch (error) {
if (error instanceof BigcommerceApiError && error.status === 404) {
// Remove the cookie if it exists but the cart wasn't found
res.setHeader('Set-Cookie', getCartCookie(config.cartCookie))
} else {
throw error
}
}
res.status(200).json({ data: result.data ?? null })
}
export default getCart