Express.js file server endpoint filter by extension

JS
S
JavaScript

Basic extension checking, returns 415 if the file requested is not mp4

1  @Get(/^\/(\S+)/)
2  public async streamFile(request: Request, response: Response): Promise<any> {
3    const protocol = 'https';
4    const hostname = 'serving.coderecipes.com';
5    const url = `${protocol}://${hostname}/bw/${request.params[0]}`;
6    const extension = url.substr(-4);
7    console.log(extension, extension.indexOf('mp4'));
8    if (extension.indexOf('mp4') > -1) {
9      return axios({
10        method: 'get',
11        url: url,
12        responseType: 'stream'
13      })
14      .then((streamResponse) => {
15          streamResponse.data.pipe(response);
16      })
17      .catch((err: any) => {
18        console.log('not found');
19        // console.log('error', err);
20        response.send(404);
21        // throw err;
22      });
23    }
24    console.log('wrong extension');
25    return response.send(415);
26  }

Created on 1/7/2019