@@ -14,6 +14,8 @@ use salvo::http::header::CONTENT_TYPE;
14
14
use salvo:: http:: { Request , Response , StatusCode } ;
15
15
use salvo:: prelude:: * ;
16
16
use salvo:: routing:: PathFilter ;
17
+ use salvo:: http:: HeaderValue ;
18
+ use salvo:: http:: header;
17
19
use tokio:: time:: Duration ;
18
20
use url:: Url ;
19
21
use http;
@@ -128,7 +130,7 @@ pub fn route() -> Router {
128
130
. hoop ( transform_req_content_directory)
129
131
. hoop ( transform_req_include_guids)
130
132
. hoop ( transform_req_android)
131
- . hoop ( proxy_request )
133
+ . hoop ( proxy_for_transform )
132
134
. get ( transform_hubs_response) ,
133
135
)
134
136
. push (
@@ -141,7 +143,7 @@ pub fn route() -> Router {
141
143
. path ( format ! ( "{}/<id>" , PLEX_HUBS_SECTIONS ) )
142
144
. hoop ( transform_req_include_guids)
143
145
. hoop ( transform_req_android)
144
- . hoop ( proxy_request )
146
+ . hoop ( proxy_for_transform )
145
147
. get ( transform_hubs_response)
146
148
)
147
149
. push (
@@ -187,6 +189,23 @@ async fn proxy_request(
187
189
proxy. handle ( req, depot, res, ctrl) . await ;
188
190
}
189
191
192
+ #[ handler]
193
+ async fn proxy_for_transform (
194
+ req : & mut Request ,
195
+ res : & mut Response ,
196
+ depot : & mut Depot ,
197
+ ctrl : & mut FlowCtrl ,
198
+ ) -> Result < ( ) , anyhow:: Error > {
199
+ let config: Config = Config :: dynamic ( req) . extract ( ) . unwrap ( ) ;
200
+ let content_type = get_content_type_from_headers ( req. headers_mut ( ) ) ;
201
+ let proxy = default_proxy ( ) ;
202
+ let headers_ori = req. headers ( ) . clone ( ) ;
203
+ req. headers_mut ( ) . insert ( http:: header:: ACCEPT , header:: HeaderValue :: from_static ( "application/json" ) ) ;
204
+ proxy. handle ( req, depot, res, ctrl) . await ;
205
+ * req. headers_mut ( ) = headers_ori;
206
+ Ok ( ( ) )
207
+ }
208
+
190
209
// skip processing when product is plexamp
191
210
#[ handler]
192
211
async fn should_skip (
@@ -534,11 +553,12 @@ pub async fn transform_hubs_response(
534
553
let params: PlexContext = req. extract ( ) . await . unwrap ( ) ;
535
554
let plex_client = PlexClient :: from_request ( req, params. clone ( ) ) ;
536
555
let content_type = get_content_type_from_headers ( req. headers_mut ( ) ) ;
537
-
556
+ dbg ! ( & res) ;
557
+ dbg ! ( & req) ;
538
558
let mut container: MediaContainerWrapper < MediaContainer > =
539
559
from_salvo_response ( res) . await ?;
540
560
container. content_type = content_type;
541
-
561
+ dbg ! ( "GO" ) ;
542
562
TransformBuilder :: new ( plex_client, params. clone ( ) )
543
563
. with_filter ( HubRestrictionFilter )
544
564
. with_transform ( HubStyleTransform { is_home : true } )
@@ -735,7 +755,6 @@ pub async fn default_transform(
735
755
let mut container: MediaContainerWrapper < MediaContainer > =
736
756
from_reqwest_response ( upstream_res) . await ?;
737
757
container. content_type = content_type;
738
- // container.media_container.meta
739
758
740
759
TransformBuilder :: new ( plex_client, params. clone ( ) )
741
760
. with_filter ( HubRestrictionFilter )
0 commit comments