@@ -112,9 +112,50 @@ export class ApiClientConfigurator {
112112 )
113113 }
114114
115+ if ( config . middleware ) {
116+ middleware . push (
117+ ...this . getCustomMiddleware <
118+ RequestContextType ,
119+ ResponseContextType ,
120+ ObservableRequestContextType ,
121+ ObservableResponseContextType
122+ > ( config , observableRequestContextParam , observableResponseContextParam ) ,
123+ )
124+ }
125+
115126 return middleware
116127 }
117128
129+ protected static getCustomMiddleware <
130+ RequestContextType extends IRequestContext ,
131+ ResponseContextType ,
132+ ObservableRequestContextType ,
133+ ObservableResponseContextType ,
134+ > (
135+ config : IConfiguration ,
136+ observableRequestContextParam : new ( promise : Promise < RequestContextType > ) => ObservableRequestContextType ,
137+ observableResponseContextParam : new ( promise : Promise < ResponseContextType > ) => ObservableResponseContextType ,
138+ ) {
139+ return (
140+ config . middleware
141+ ?. filter ( ( m ) => m . pre || m . post )
142+ . map ( ( m ) => ( {
143+ pre : ( context : RequestContextType ) : ObservableRequestContextType => {
144+ if ( m . pre && typeof m . pre === 'function' ) {
145+ return new observableRequestContextParam ( Promise . resolve ( m . pre ( context ) as RequestContextType ) )
146+ }
147+ return new observableRequestContextParam ( Promise . resolve ( context ) )
148+ } ,
149+ post : ( context : ResponseContextType ) : ObservableResponseContextType => {
150+ if ( m . post && typeof m . post === 'function' ) {
151+ return new observableResponseContextParam ( Promise . resolve ( m . post ( context ) as ResponseContextType ) )
152+ }
153+ return new observableResponseContextParam ( Promise . resolve ( context ) )
154+ } ,
155+ } ) ) ?? [ ]
156+ )
157+ }
158+
118159 protected static getHeaderMiddleware <
119160 RequestContextType extends IRequestContext ,
120161 ResponseContextType ,
0 commit comments