11import { config , updateConfig , loadHandler } from "./src/config"
22import { RouteCheck } from "./src/RouteCheck"
3+ import { ConfigParameters } from "./src/interface" ;
34
4- export default ( options : any = { } ) => {
5- // TODO: options callbacks
6- /*
7- options = {
8- callbacks: {
9- before_serve(key: string, body: string, headers: any): void {
10-
11- },
12- before_cache(route: any, cache: Buffer[], headers: any): void {
13-
14- },
15- after_cache(route: any, body: Buffer, headers: any): void {
16-
17- }
18- }
19- }
20- */
21-
5+ export default ( options : ConfigParameters = { } ) => {
226 updateConfig ( options ) ;
237
248 const module = loadHandler ( config ) ;
@@ -41,7 +25,9 @@ export default (options: any = {}) => {
4125 return next ( ) ;
4226 }
4327 else if ( reply ) {
44- // TODO: callback before_serve
28+ if ( config . callbacks && config . callbacks . before_serve ) {
29+ config . callbacks . before_serve ( key , reply . content , reply . header , reply . encoding ) ;
30+ }
4531
4632 res . set ( reply . header ) ;
4733 return res . end ( reply . content , reply . encoding ) ;
@@ -66,9 +52,11 @@ export default (options: any = {}) => {
6652 return ;
6753 }
6854
69- // TESTEEEE
70- // TODO: callback before_cache
71- cache . push ( Buffer . from ( "<hr /><b>cac<font color='red'>hed</font></b>" , encoding ) ) ;
55+
56+ let originalHeaders = Object . assign ( { } , res . _headers ) ;
57+ if ( config . callbacks && config . callbacks . before_cache ) {
58+ config . callbacks . before_cache ( route , cache , originalHeaders , encoding ) ;
59+ }
7260
7361 const now = new Date ( ) ;
7462 let dateExpire = new Date ( ) ;
@@ -78,11 +66,11 @@ export default (options: any = {}) => {
7866 const buf = Buffer . concat ( cache ) ;
7967
8068 const headers = route . mergeHeaders (
81- res . _headers ,
69+ originalHeaders ,
8270 {
8371 "Content-Length" : buf . length ,
8472 "Last-Modified" : now . toUTCString ( ) ,
85- "Cache-Control" : "max-age=" + ( dateExpire . getTime ( ) / 1000 )
73+ "Cache-Control" : "max-age=" + ( dateExpire . getTime ( ) / 1000 >> 0 )
8674 }
8775 ) ;
8876
@@ -92,8 +80,11 @@ export default (options: any = {}) => {
9280 headers ,
9381 rawUrl ,
9482 expire
95- ) ;
96- // TODO: callback after_cache
83+ , ( key ) => {
84+ if ( config . callbacks && config . callbacks . after_cache ) {
85+ config . callbacks . after_cache ( key , route , buf , headers , encoding ) ;
86+ }
87+ } ) ;
9788 end . call ( res ) ;
9889 } ;
9990 return next ( ) ;
0 commit comments