@@ -5,14 +5,16 @@ const { URL } = require('whatwg-url')
5
5
const UrlPattern = require ( 'url-pattern' )
6
6
const cors = require ( 'micro-cors' ) ( )
7
7
const fetch = require ( 'node-fetch' )
8
- const { filterByPrefix, mustachReplace } = require ( './utils/tokenization ' )
8
+ const { filterByPrefix, mustachReplace, safeParse } = require ( './utils' )
9
9
10
- const _toJSON = error => {
11
- return ! error
12
- ? ''
13
- : Object . getOwnPropertyNames ( error ) . reduce (
10
+ const _toJSON = errorObj => {
11
+ return ! errorObj
12
+ ? { }
13
+ : typeof errorObj === 'string'
14
+ ? errorObj
15
+ : Object . getOwnPropertyNames ( errorObj ) . reduce (
14
16
( jsonError , key ) => {
15
- return { ...jsonError , [ key ] : error [ key ] }
17
+ return { ...jsonError , [ key ] : errorObj [ key ] }
16
18
} ,
17
19
{ type : 'error' }
18
20
)
@@ -157,15 +159,15 @@ const handleResponse = response => {
157
159
return text
158
160
} )
159
161
. then ( ( response = { } ) => {
160
- const jsonResponse = JSON . parse ( response )
162
+ const jsonResponse = safeParse ( response )
161
163
// console.log('processRequest, jsonResponse', jsonResponse)
162
164
return jsonResponse
163
165
} )
164
166
}
165
167
166
168
const processRequest = ( res , origin , url , options ) => {
167
- // console.log('url', url)
168
- // console.log('options', options)
169
+ // console.log('processRequest, url', url)
170
+ // console.log('processRequest, options', options)
169
171
return fetch ( url , options )
170
172
. then ( response => {
171
173
// console.log('processRequest, response', response)
@@ -192,14 +194,14 @@ const processRequest = (res, origin, url, options) => {
192
194
return send ( res , 200 , data )
193
195
} )
194
196
. catch ( error => {
195
- const jsonError = _toJSON ( error )
196
- return send ( res , error . statusCode || 500 , jsonError )
197
+ console . error ( 'processRequest, handleResponse, error' , error )
198
+ return send ( res , error . statusCode || 500 , _toJSON ( error ) )
197
199
} )
198
200
}
199
201
} )
200
202
. catch ( error => {
201
- const jsonError = _toJSON ( error )
202
- return send ( res , error . statusCode || 500 , jsonError )
203
+ console . error ( 'processRequest, error' , error )
204
+ return send ( res , error . statusCode || 500 , _toJSON ( error ) )
203
205
} )
204
206
}
205
207
@@ -211,19 +213,18 @@ const handleOptions = async (req, res) => {
211
213
}
212
214
213
215
const handleProxy = async ( req , res ) => {
214
- // console.log('called proxy')
215
- // console.log('req.method', req.method)
216
+ // console.log('handleProxy, req.method', req.method)
216
217
if ( req . method === 'OPTIONS' ) {
217
218
return handleOptions ( req , res )
218
219
}
219
220
220
221
try {
221
222
const path = req . url
222
- // console.log('path', path)
223
- // console.log('req.rawHeaders',req.rawHeaders)
224
- // console.log('req.headers.referer', req.headers.referer)
225
- // console.log('req.headers.origin', req.headers.origin)
226
- // console.log('req.headers',req.headers)
223
+ // console.log('handleProxy, path', path)
224
+ // console.log('handleProxy, req.rawHeaders',req.rawHeaders)
225
+ // console.log('handleProxy, req.headers.referer', req.headers.referer)
226
+ // console.log('handleProxy, req.headers.origin', req.headers.origin)
227
+ // console.log('handleProxy, req.headers',req.headers)
227
228
if ( ! req . headers . referer ) {
228
229
return noReferer ( req , res )
229
230
}
@@ -237,7 +238,7 @@ const handleProxy = async (req, res) => {
237
238
return notAuthorized ( req , res )
238
239
}
239
240
240
- // console.log('proxyPrefix', proxyPrefix)
241
+ // console.log('handleProxy, proxyPrefix', proxyPrefix)
241
242
const destinationURL = decodeURIComponent (
242
243
decodeURIComponent ( path . replace ( `/${ proxyPrefix } /` , '' ) )
243
244
)
@@ -256,18 +257,18 @@ const handleProxy = async (req, res) => {
256
257
req . headers [ 'content-type' ] === 'application/json'
257
258
? JSON . stringify ( ( await json ( req ) ) || { } )
258
259
: await text ( req )
259
- // console.log('txt', txt)
260
+ // console.log('handleProxy, txt', txt)
260
261
261
262
if ( body ) {
262
263
fetchOptions . body = body
263
264
}
264
- // console.log('fetchOptions.body', fetchOptions.body)
265
+ // console.log('handleProxy, fetchOptions.body', fetchOptions.body)
265
266
}
266
- // console.log('fetchOptions', fetchOptions)
267
+ // console.log('handleProxy, fetchOptions', fetchOptions)
267
268
return processRequest ( res , req . headers . origin , destinationURL , fetchOptions )
268
269
} catch ( error ) {
269
- const jsonError = _toJSON ( error )
270
- return send ( res , error . statusCode || 500 , jsonError )
270
+ console . error ( 'handleProxy, error' , error )
271
+ return send ( res , error . statusCode || 500 , _toJSON ( error ) )
271
272
}
272
273
}
273
274
0 commit comments