aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-24 22:29:05 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-24 22:29:05 -0700
commitbe5789fe01eb510ba56c101e2cef82b37dc2ad07 (patch)
tree01ba5abbb80a289648d6952f542ee89ecf53b298 /src/javascript/jsc
parent120b2670da71f65e37b57b0137e38e06f1b55ada (diff)
downloadbun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.tar.gz
bun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.tar.zst
bun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.zip
Auto-detect MimeType based on file extension
Diffstat (limited to 'src/javascript/jsc')
-rw-r--r--src/javascript/jsc/webcore/response.zig18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index 9465d47c6..748828daf 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -1972,7 +1972,23 @@ pub const Blob = struct {
pub fn initFile(pathlike: JSC.Node.PathOrFileDescriptor, mime_type: ?HTTPClient.MimeType, allocator: std.mem.Allocator) !*Store {
var store = try allocator.create(Blob.Store);
store.* = .{
- .data = .{ .file = FileStore.init(pathlike, mime_type) },
+ .data = .{ .file = FileStore.init(
+ pathlike,
+ mime_type orelse brk: {
+ if (pathlike == .path) {
+ const sliced = pathlike.path.slice();
+ if (sliced.len > 0) {
+ var extname = std.fs.path.extension(sliced);
+ extname = std.mem.trim(u8, extname, ".");
+ if (HTTPClient.MimeType.byExtension(extname)) |mime| {
+ break :brk mime.value;
+ }
+ }
+
+ break :brk null;
+ }
+ },
+ ) },
.allocator = allocator,
.ref_count = 1,
};