From d383cebe78ad82d312855c55a0f819db57e1146e Mon Sep 17 00:00:00 2001 From: garrettmills Date: Sat, 5 Sep 2020 11:42:40 -0500 Subject: [PATCH] add mime information to universal path; include content type in static server --- lib/src/http/response/FileResponseFactory.ts | 1 + lib/src/support/UniversalPath.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/src/http/response/FileResponseFactory.ts b/lib/src/http/response/FileResponseFactory.ts index 1d9f34e..9c688c6 100644 --- a/lib/src/http/response/FileResponseFactory.ts +++ b/lib/src/http/response/FileResponseFactory.ts @@ -38,6 +38,7 @@ export default class FileResponseFactory extends ResponseFactory { if ( content.headers && content.body && length ) { request.response.body = content.body request.response.headers.set('Content-Length', length) + request.response.headers.set('Content-Type', path.content_type) } else { this.logger.debug(`Tried to serve file that does not exist: ${path}`) request.response.status = HTTPStatus.NOT_FOUND diff --git a/lib/src/support/UniversalPath.ts b/lib/src/support/UniversalPath.ts index dfc7e88..9d7cab8 100644 --- a/lib/src/support/UniversalPath.ts +++ b/lib/src/support/UniversalPath.ts @@ -1,4 +1,5 @@ import { path as deno_path } from '../external/std.ts' +import * as Mime from 'https://deno.land/x/media_types/mod.ts' export enum UniversalPathPrefix { HTTP = 'http://', @@ -87,4 +88,20 @@ export class UniversalPath { toString() { return `${this.prefix}${this._local}` } + + get ext() { + return deno_path.extname(this._local) + } + + get mime_type() { + return Mime.lookup(this.ext) + } + + get content_type() { + return Mime.contentType(this.ext) + } + + get charset() { + return Mime.charset(this.mime_type) + } }