1
+ const ritm = require ( "require-in-the-middle" )
2
+
3
+ function versionCheck ( ) {
4
+ return true
5
+ }
6
+
7
+ const METLO_DETAILS = {
8
+ key : "" ,
9
+ host : "" ,
10
+ pool : null
11
+ }
12
+
13
+ function initialize ( { key, host, pool } ) {
14
+ if ( versionCheck ( ) ) {
15
+ METLO_DETAILS . key = key
16
+ METLO_DETAILS . host = host
17
+ METLO_DETAILS . pool = pool
18
+
19
+
20
+ async function compileInformation ( request , response ) {
21
+ const data = JSON . stringify (
22
+ {
23
+ request : {
24
+ url : {
25
+ host : request . hostname ,
26
+ path : request . routerPath ,
27
+ parameters : Object . entries ( request . query ) . map ( ( [ k , v ] ) => ( { name : k , value : v } ) ) ,
28
+ } ,
29
+ headers : Object . entries ( request . headers ) . map ( ( [ k , v ] ) => ( { name : k , value : v } ) ) ,
30
+ body : request . body || "No Body" ,
31
+ method : request . method ,
32
+ } ,
33
+ response : {
34
+ url : `${ response . raw . socket . remoteAddress } :${ response . raw . socket . remotePort } ` ,
35
+ status : response . statusCode ,
36
+ headers : Object . entries ( response . headers ) . map ( ( [ k , v ] ) => ( { name : k , value : v } ) ) ,
37
+ body : response . body ,
38
+ } ,
39
+ meta : {
40
+ environment : process . env . NODE_ENV ,
41
+ incoming : true ,
42
+ source : request . raw . socket . remoteAddress ,
43
+ sourcePort : request . raw . socket . remotePort ,
44
+ // TODO : Add destination
45
+ destination : "server.hostname" ,
46
+ destinationPort : "server.port" ,
47
+ }
48
+ }
49
+ )
50
+
51
+ METLO_DETAILS . pool . runTask ( { host : METLO_DETAILS . host , key : METLO_DETAILS . key , data } )
52
+ }
53
+
54
+ ritm ( [ 'fastify' ] , function ( exports , name , basedir ) {
55
+
56
+ const originalFastify = exports
57
+ function modifiedFastify ( ) {
58
+ let fastifyInst = originalFastify . apply ( this , arguments )
59
+ fastifyInst . addHook ( "onSend" , async ( request , reply , payload ) => {
60
+ compileInformation ( request , reply )
61
+ return payload
62
+ } )
63
+ return fastifyInst
64
+ }
65
+ exports = modifiedFastify
66
+
67
+ return exports
68
+ } )
69
+ }
70
+ }
71
+ module . exports = { init : initialize }
0 commit comments