@@ -228,7 +228,59 @@ export const proxy = (
228
228
}
229
229
230
230
const _headers = new Headers ( ) ;
231
- _headers . set ( "X-Set-Headers" , JSON . stringify ( Object . fromEntries ( headers . entries ( ) ) ) ) ;
231
+ _headers . set ( "X-Set-Headers" , JSON . stringify ( Object . fromEntries ( headers ) ) ) ;
232
+
233
+ init . headers = _headers ;
234
+
235
+ if ( input instanceof Request ) {
236
+ // @ts -ignore
237
+ input . duplex = "half" ;
238
+ }
239
+
240
+ const request = new Request ( url , input instanceof Request ? input : undefined ) ;
241
+ return [ request , init ] ;
242
+ } ;
243
+
244
+ export const proxy2 = (
245
+ input : RequestInfo | URL ,
246
+ init : RequestInit = { } ,
247
+ ) : [ Request , RequestInit ] => {
248
+ let url : URL | string ;
249
+ if ( typeof input === "string" ) {
250
+ url = new URL ( input ) ;
251
+ } else if ( input instanceof Request ) {
252
+ url = new URL ( input . url ) ;
253
+ } else if ( input instanceof URL ) {
254
+ url = input ;
255
+ } else {
256
+ throw "Unsupported input type" ;
257
+ }
258
+ url = `https://cors-proxy.spicetify.app/${ url } ` ;
259
+
260
+ let headers : Headers ;
261
+ if ( init . headers ) {
262
+ headers = new Headers ( init . headers ) ;
263
+ } else if ( input instanceof Request ) {
264
+ headers = input . headers ;
265
+ } else {
266
+ headers = new Headers ( ) ;
267
+ }
268
+
269
+ const _headers = new Headers ( ) ;
270
+ for (
271
+ const [ kp , k ] of [
272
+ [ "X-Cookie" , "Cookie" ] ,
273
+ [ "X-Referer" , "Referer" ] ,
274
+ [ "X-Origin" , "Origin" ] ,
275
+ [ "X-User-Agent" , "User-Agent" ] ,
276
+ [ "X-X-Real-Ip" , "X-Real-Ip" ] ,
277
+ ]
278
+ ) {
279
+ const v = headers . get ( k ) ;
280
+ if ( v ) {
281
+ _headers . set ( kp , v ) ;
282
+ }
283
+ }
232
284
233
285
init . headers = _headers ;
234
286
0 commit comments