1
- import { createError , readBody , getMethod , setResponseHeader , setResponseStatus } from 'h3' ;
2
- import https from 'https' ;
1
+ import { createError , proxyRequest } from 'h3' ;
2
+
3
3
export default defineEventHandler ( async ( event ) => {
4
+
4
5
const runtimeConfig = useRuntimeConfig ( ) ?. shopinvader || { }
5
6
const config = runtimeConfig ?. erp ?. proxy || null
6
7
if ( ! config ) {
@@ -9,42 +10,21 @@ export default defineEventHandler(async (event) => {
9
10
statusMessage : 'No proxy config found' ,
10
11
} ) ;
11
12
}
13
+
12
14
try {
13
- const method = getMethod ( event )
14
15
const url :string = event . node . req . url ?. replace ( '/shopinvader' , '' ) || '' ;
15
16
const reqHeaders = getHeaders ( event )
16
17
17
- const body = method !== 'GET' && method !== 'HEAD' ? await readBody ( event ) : null
18
- const agent = new https . Agent ( {
19
- rejectUnauthorized : false ,
20
- } )
21
-
22
- const headers :any = {
18
+ let headers :HeadersInit = {
23
19
'Content-Type' : reqHeaders ?. [ 'content-type' ] || 'application/json' ,
24
20
}
25
21
26
- if ( reqHeaders ?. cookie ) {
27
- headers [ 'cookie' ] = reqHeaders . cookie
28
- }
29
22
if ( config ?. auth ) {
30
23
headers [ 'Authorization' ] = config . auth
31
24
}
32
-
33
- const response = await $fetch . raw ( `${ config ?. url } ${ url } ` , {
34
- method,
35
- agent,
36
- body,
37
- headers
25
+ return await proxyRequest ( event , `${ config ?. url } ${ url } ` , {
26
+ headers,
38
27
} )
39
- const cookies = response . headers . get ( 'set-cookie' )
40
- const contentType = response . headers . get ( 'content-type' ) || 'application/json'
41
- if ( cookies ) {
42
- setResponseHeader ( event , 'set-cookie' , cookies )
43
- }
44
- setResponseHeader ( event , 'content-type' , contentType )
45
- setResponseStatus ( event , response . status )
46
-
47
- return response . _data
48
28
} catch ( error :any ) {
49
29
return createError ( {
50
30
statusCode : error ?. response ?. status ,
0 commit comments