Skip to content

Commit 2b32a4d

Browse files
authored
feat(api): use request fetch (#3677)
1 parent 340fdf4 commit 2b32a4d

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/runtime/internal/api.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
1-
import type { H3Event } from 'h3'
1+
import { getRequestHeaders, type H3Event } from 'h3'
22
import { checksums } from '#content/manifest'
33

4+
async function fetchContent<T>(
5+
event: H3Event | undefined,
6+
collection: string,
7+
path: string,
8+
options: NonNullable<Parameters<typeof $fetch>[1]>,
9+
): Promise<T> {
10+
const headers = event ? getRequestHeaders(event) : {}
11+
const url = `/__nuxt_content/${collection}/${path}`
12+
const fetchOptions = {
13+
...options,
14+
headers: {
15+
...headers,
16+
...options.headers,
17+
},
18+
query: { v: checksums[String(collection)], t: import.meta.dev ? Date.now() : undefined },
19+
}
20+
return event ? await event.$fetch(url, fetchOptions) : await $fetch(url, fetchOptions)
21+
}
22+
423
export async function fetchDatabase(event: H3Event | undefined, collection: string): Promise<string> {
5-
return await $fetch(`/__nuxt_content/${collection}/sql_dump.txt`, {
6-
context: event ? { cloudflare: event.context.cloudflare } : {},
24+
return fetchContent(event, collection, 'sql_dump.txt', {
725
responseType: 'text',
826
headers: {
927
'content-type': 'text/plain',
10-
...(event?.node?.req?.headers?.cookie ? { cookie: event.node.req.headers.cookie } : {}),
1128
},
12-
query: { v: checksums[String(collection)], t: import.meta.dev ? Date.now() : undefined },
1329
})
1430
}
1531

1632
export async function fetchQuery<Item>(event: H3Event | undefined, collection: string, sql: string): Promise<Item[]> {
17-
return await $fetch(`/__nuxt_content/${collection}/query`, {
18-
context: event ? { cloudflare: event.context.cloudflare } : {},
33+
return fetchContent(event, collection, 'query', {
1934
headers: {
2035
'content-type': 'application/json',
21-
...(event?.node?.req?.headers?.cookie ? { cookie: event.node.req.headers.cookie } : {}),
2236
},
23-
query: { v: checksums[String(collection)], t: import.meta.dev ? Date.now() : undefined },
2437
method: 'POST',
2538
body: {
2639
sql,

0 commit comments

Comments
 (0)