@@ -67,9 +67,65 @@ pub fn route() -> Router {
67
67
async fn test ( req : & mut Request , _depot : & mut Depot , res : & mut Response ) {
68
68
let params: PlexParams = req. extract ( ) . await . unwrap ( ) ;
69
69
let plex_client = PlexClient :: from_request ( req, params. clone ( ) ) ;
70
+
71
+ // not sure anymore why i have this lol
72
+ let content_directory_id_size =
73
+ params. clone ( ) . content_directory_id . unwrap ( ) . len ( ) ;
74
+ if content_directory_id_size > usize:: try_from ( 1 ) . unwrap ( ) {
75
+ let upstream_res = plex_client. request ( req) . await . unwrap ( ) ;
76
+ let container = from_reqwest_response ( upstream_res) . await . unwrap ( ) ;
77
+ res. render ( container) ;
78
+ }
79
+
80
+ if params. clone ( ) . content_directory_id . unwrap ( ) [ 0 ]
81
+ != params. clone ( ) . pinned_content_directory_id . unwrap ( ) [ 0 ]
82
+ {
83
+ // We only fill the first one.
84
+ let mut container: MediaContainerWrapper < MediaContainer > =
85
+ MediaContainerWrapper :: default ( ) ;
86
+ container. content_type =
87
+ get_content_type_from_headers ( req. headers_mut ( ) ) ;
88
+ container. media_container . size = Some ( 0 ) ;
89
+ container. media_container . allow_sync = Some ( true ) ;
90
+ container. media_container . identifier =
91
+ Some ( "com.plexapp.plugins.library" . to_string ( ) ) ;
92
+ return res. render ( container) ;
93
+ }
94
+
95
+ // first directory, load everything here because we wanna reemiiiixxx
96
+
97
+ for id in params. clone ( ) . content_directory_id . unwrap ( ) {
98
+ add_query_param_salvo (
99
+ req,
100
+ "contentDirectoryID" . to_string ( ) ,
101
+ id,
102
+ ) ;
103
+ let u = plex_client. request ( req) . await . unwrap ( ) ;
104
+ let mut c: MediaContainerWrapper < MediaContainer > =
105
+ from_reqwest_response ( u) . await . unwrap ( ) ;
106
+ }
107
+
108
+ // Hack, as the list could be smaller when removing watched items. So we request more.
109
+ if let Some ( original_count) = params. clone ( ) . count {
110
+ add_query_param_salvo (
111
+ req,
112
+ "count" . to_string ( ) ,
113
+ ( original_count * 2 ) . to_string ( ) ,
114
+ ) ;
115
+ }
116
+
70
117
let upstream_res = plex_client. request ( req) . await . unwrap ( ) ;
71
118
let mut container: MediaContainerWrapper < MediaContainer > =
72
119
from_reqwest_response ( upstream_res) . await . unwrap ( ) ;
120
+
121
+ TransformBuilder :: new ( plex_client, params. clone ( ) )
122
+ . with_transform ( HubStyleTransform )
123
+ . with_transform ( HubMixTransform )
124
+ . with_transform ( HubChildrenLimitTransform {
125
+ limit : params. clone ( ) . count . unwrap ( ) ,
126
+ } )
127
+ . apply_to ( & mut container)
128
+ . await ;
73
129
res. render ( container) ;
74
130
}
75
131
0 commit comments