barend-erasmus/web-push-service

View on GitHub
src/routes/push.ts

Summary

Maintainability
A
0 mins
Test Coverage
import * as express from 'express';
import { Client } from '../models/client';
import { PushPostRequestValidator } from '../validators/requests/push-post';
import { PushService } from '../services/push';

export class PushRouter {
  public static async post(request: express.Request, response: express.Response): Promise<void> {
    try {
      if (!PushPostRequestValidator.validateParams(request.params)) {
        response.status(400).json({
          message: `Invalid Request Parameters`,
        });

        return;
      }

      const channel: string = request.params['channel'];

      const payload: any = request.body;

      const client: Client = request['client'];

      const pushService: PushService = request['pushService'];

      await pushService.create(client, channel, payload);

      response.json('OK');
    } catch (error) {
      console.error(error);

      response.status(500).json({
        message: 'An error occurred'
      });
    }
  }
}