Skip to content
Snippets Groups Projects
Select Git revision
  • c158e0700d96f3b08dda0a987a915a29b36af40d
  • main default protected
2 results

app.ts

Blame
  • app.ts 1.38 KiB
    'use strict'
    
    import * as http from 'http'
    import * as express from 'express'
    
    import { Metrics } from '../../dist/index'
    
    class App {
      public app: express.Application
      private readonly router: express.Router
      public readonly server: http.Server
      private readonly metrics: Metrics
    
      constructor (port: number) {
    
        this.app = express()
    
        this.router = express.Router()
    
        this.metrics = new Metrics({
          ignore: ['/bar'],
          disableErrorCounter: false,
          disableRouteCounter: false,
          disableDurationCounter: false
        })
    
        this.router.use(this.metrics.start.bind(this.metrics))
    
        this.router.get('/favicon.ico', (req, res) => res.status(204)) // No Favicon here
    
        this.router.get('/foo', (req:express.Request, res:express.Response) => {
          res.status(200).send('foo')
        })
        this.router.get('/bar', (req:express.Request, res:express.Response) => {
          res.status(200).send('bar')
        })
        this.router.get('/404', (req:express.Request, res:express.Response) => {
          res.status(404).end()
        })
        this.router.get('/401', (req:express.Request, res:express.Response) => {
          res.status(401).end()
        })
        this.router.get('/_metrics', this.metrics.endpoint)
    
        this.app.use(this.router)
    
        this.server = http.createServer(this.app)
        this.server.listen(port)
        console.log(`metrics-example is running on Port ${port as number}`)
      }
    }
    export default App