Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions service/server/Environment.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
import { DatadogStatsdConfig } from './middlewares/DatadogStatsdMiddleware'

export class Environment {
public static isLocal(): boolean {
return Environment.getStage() === 'local'
}

public static isStaging(): boolean {
return Environment.getStage() === 'staging'
}

public static isProd(): boolean {
return Environment.getStage() === 'prod'
}
Expand All @@ -12,6 +18,22 @@ export class Environment {
}

public static getPort(): number {
return process.env.PORT as any || 8000
return (process.env.PORT as any) || 8000
}

public static getVerticalName() {
return process.env.VERTICAL_NAME || 'cats'
}

public static getServiceName() {
return process.env.SERVICE_NAME || 'cats-provider'
}

public static getDatadogOptions(): DatadogStatsdConfig {
return {
targetHost: process.env.DATADOG_HOST || 'https://datadog.mycompany.com',
enableTelemetry: process.env.ENABLE_DATADOG_TELEMETRY === 'true' || false,
tags: [`team:${Environment.getVerticalName()}`, `product:${Environment.getServiceName()}`]
}
}
}
}
43 changes: 22 additions & 21 deletions service/server/ExpressServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export class ExpressServer {
}

public listen(server: Express, port: number) {
console.info(`Starting server on port ${port}`)
return server.listen(port)
}

Expand All @@ -62,13 +63,15 @@ export class ExpressServer {
server.use(helmet())
server.use(helmet.referrerPolicy({ policy: 'same-origin' }))
server.use(helmet.noCache())
server.use(helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
styleSrc: ["'unsafe-inline'"],
scriptSrc: ["'unsafe-inline'", "'self'"]
}
}))
server.use(
helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
styleSrc: ["'unsafe-inline'"],
scriptSrc: ["'unsafe-inline'", "'self'"]
}
})
)
}

private setupStandardMiddlewares(server: Express) {
Expand All @@ -89,16 +92,12 @@ export class ExpressServer {
}

private configureEjsTemplates(server: Express) {
server.set('views', [ 'resources/views' ])
server.set('views', ['resources/views'])
server.set('view engine', 'ejs')
}

private setupTelemetry(server: Express) {
DatadogStatsdMiddleware.applyTo(server, {
targetHost: 'https://datadog.mycompany.com',
enableTelemetry: false,
tags: ['team:cats', 'product:cats-provider']
})
DatadogStatsdMiddleware.applyTo(server, Environment.getDatadogOptions())
}

private setupServiceDependencies(server: Express) {
Expand All @@ -113,7 +112,7 @@ export class ExpressServer {
const context: FrontendContext = {
cssFiles: this.cssFiles,
config: {
welcomePhrases: [ 'Bienvenue', 'Welcome', 'Willkommen', 'Welkom', 'Hoş geldin', 'Benvenuta', 'Bienvenido' ]
welcomePhrases: ['Bienvenue', 'Welcome', 'Willkommen', 'Welkom', 'Hoş geldin', 'Benvenuta', 'Bienvenido']
}
}
const renderPage = (template: string) => async (req: Request, res: Response, _: NextFunction) => {
Expand All @@ -139,13 +138,15 @@ export class ExpressServer {
const compiler = require('webpack')(config)

const webpackDevMiddleware = require('webpack-dev-middleware')
server.use(webpackDevMiddleware(compiler, {
hot: true,
publicPath: config.output.publicPath,
compress: true,
host: 'localhost',
port: Environment.getPort()
}))
server.use(
webpackDevMiddleware(compiler, {
hot: true,
publicPath: config.output.publicPath,
compress: true,
host: 'localhost',
port: Environment.getPort()
})
)

const webpackHotMiddleware = require('webpack-hot-middleware')
server.use(webpackHotMiddleware(compiler))
Expand Down