@@ -16,38 +16,46 @@ trait Stackables
1616
1717 private $ loggerFile = 'webapi-logs.log ' ;
1818
19- protected function getStacks ($ config ) {
19+ protected function getStacks ($ config )
20+ {
2021
2122 $ stack = HandlerStack::create ();
2223
23- if (!empty ($ config ['settings ' ]['requestHandler ' ])) {
24+ if (!empty ($ config ['settings ' ]['requestHandler ' ])) {
2425 $ request = $ this ->getRequestStack ($ config ['settings ' ]['requestHandler ' ]);
2526 $ stack ->push ($ request );
2627 }
28+ if (is_callable (static ::requestHandler)) {
29+ $ stack ->push ($ this ->getRequestStack (static ::requestHandler));
30+ }
2731
28- if (!empty ($ config ['settings ' ]['responseHandler ' ])) {
32+ if (!empty ($ config ['settings ' ]['responseHandler ' ])) {
2933 $ response = $ this ->getResponseStack ($ config ['settings ' ]['responseHandler ' ]);
3034 $ stack ->push ($ response );
31- }
35+ }
36+ if (is_callable (static ::responseHandler)) {
37+ $ stack ->push ($ this ->getResponseStack (static ::responseHandler));
38+ }
3239
33- if ($ config ['log ' ] !== false ) {
40+ if ($ config ['log ' ] !== false ) {
3441 $ logger = $ this ->getLoggerStack ($ config ['log ' ] ?? null );
3542 $ stack ->push ($ logger );
36- }
43+ }
3744
3845 return $ stack ;
3946
4047 }
48+
4149 protected function getLoggerStack ($ loggerSettings )
4250 {
43- $ logger = $ loggerSettings ['logger ' ] ?? null ;
44- $ loggerFormat = $ loggerSettings ['format ' ] ?? "\r\n[{method} {uri} HTTP/{version}] \r\n{req_body} " .
45- "\r\nRESPONSE: \r\nCODE: {code} \r\n----------- \r\n{res_body} \r\n------------ " ;
51+ $ logger = $ loggerSettings ['logger ' ] ?? null ;
52+ $ loggerFormat = $ loggerSettings ['format ' ] ?? "\r\n[{method} {uri} HTTP/{version}] \r\n{req_body} " .
53+ "\r\nRESPONSE: \r\nCODE: {code} \r\n----------- \r\n{res_body} \r\n------------ " ;
4654
4755 if (!($ logger instanceof Logger)) {
4856 $ logger = new Logger ($ loggerSettings ['name ' ] ?? $ this ->loggerName ?? 'API ' );
4957 $ logger ->pushHandler (new RotatingFileHandler ($ loggerSettings ['file ' ] ??
50- $ this ->loggerFile ?? (__DIR__ . '/webapi-logs.log ' )));
58+ $ this ->loggerFile ?? (__DIR__ . '/webapi-logs.log ' )));
5159 }
5260
5361 return Middleware::log ($ logger , new MessageFormatter ($ loggerFormat ));
@@ -63,6 +71,7 @@ protected function getRequestStack($stackFunction)
6371 return $ request ;
6472 });
6573 }
74+
6675 protected function getResponseStack ($ stackFunction )
6776 {
6877 return Middleware::mapResponse (function (ResponseInterface $ response ) use ($ stackFunction ) {
0 commit comments