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) + } }