export interface Product { id: number; name: string; price: number; image: string; } interface User { id: number; } interface Cart { items: Array<{ id: number; name: string; count: number; }>; } function getOrigin(request: Request): string { return new URL(request.url).origin.replace('localhost', '127.0.0.1'); } async function get( incomingReq: Request, endpoint: string, cb: (response: Response) => Promise ): Promise { const response = await fetch(`${getOrigin(incomingReq)}${endpoint}`, { credentials: 'same-origin', headers: incomingReq.headers, }); if (!response.ok) { // TODO make this better... return null; } return cb(response); } export async function getProducts(incomingReq: Request): Promise { return get(incomingReq, '/api/products', async (response) => { const products: Product[] = await response.json(); return products; }); } export async function getProduct(incomingReq: Request, id: number): Promise { return get(incomingReq, `/api/products/${id}`, async (response) => { const product: Product = await response.json(); return product; }); } export async function getUser(incomingReq: Request): Promise { return get(incomingReq, `/api/user`, async (response) => { const user: User = await response.json(); return user; }); } export async function getCart(incomingReq: Request): Promise { return get(incomingReq, `/api/cart`, async (response) => { const cart: Cart = await response.json(); return cart; }); } export async function addToUserCart(id: number | string, name: string): Promise { await fetch(`${location.origin}/api/cart`, { credentials: 'same-origin', method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json', Cache: 'no-cache', }, body: JSON.stringify({ id, name, }), }); } '>author
AgeCommit message (Expand)AuthorFilesLines
2024-09-08style(deps): add `cargo-deny`Gravatar Anshul Gupta 2-0/+29
2024-09-08feat!: switch back to `bon`Gravatar Anshul Gupta 6-20/+17
2024-09-02chore: releaseGravatar github-actions[bot] 2-1/+12
2024-09-02ci: add MSRV testGravatar Anshul Gupta 1-0/+12
2024-09-02feat: add MSRV of 1.75.0Gravatar Anshul Gupta 1-0/+1
2024-09-02refactor: switch from `LazyLock` to `OnceLock`Gravatar Anshul Gupta 1-7/+13
2024-09-02refactor: switch to `typed_builder`Gravatar Anshul Gupta 6-28/+20