diff options
| author | 2022-07-11 06:02:48 -0700 | |
|---|---|---|
| committer | 2022-07-11 08:04:55 -0700 | |
| commit | f6cd941522ddf70a0b374fd030375bd2352cb3b9 (patch) | |
| tree | 29922515037e646f3d0adcc4a6c88b69fe41d26f /src | |
| parent | a6c216db000ee2a68b238905a917430545cc594f (diff) | |
| download | bun-f6cd941522ddf70a0b374fd030375bd2352cb3b9.tar.gz bun-f6cd941522ddf70a0b374fd030375bd2352cb3b9.tar.zst bun-f6cd941522ddf70a0b374fd030375bd2352cb3b9.zip | |
Fixes https://github.com/oven-sh/bun/issues/195
Diffstat (limited to 'src')
| -rw-r--r-- | src/bun.js/bindings/exports.zig | 3 | ||||
| -rw-r--r-- | src/bun.js/webcore/response.zig | 60 | 
2 files changed, 60 insertions, 3 deletions
| diff --git a/src/bun.js/bindings/exports.zig b/src/bun.js/bindings/exports.zig index 3a00ea210..12a13e705 100644 --- a/src/bun.js/bindings/exports.zig +++ b/src/bun.js/bindings/exports.zig @@ -1722,7 +1722,8 @@ pub const ZigConsoleClient = struct {                                  return;                              },                              .Request => { -                                this.printAs(.JSON, Writer, writer_, value, .Object, enable_ansi_colors); +                                var request = priv_data.as(JSC.WebCore.Request); +                                request.writeFormat(this, writer_, enable_ansi_colors) catch {};                                  return;                              },                              else => {}, diff --git a/src/bun.js/webcore/response.zig b/src/bun.js/webcore/response.zig index d8bb01008..056f8e2fd 100644 --- a/src/bun.js/webcore/response.zig +++ b/src/bun.js/webcore/response.zig @@ -3727,7 +3727,7 @@ pub const Body = struct {          try formatter.writeIndent(Writer, writer);          try writer.writeAll("bodyUsed: ");          formatter.printAs(.Boolean, Writer, writer, JSC.JSValue.jsBoolean(this.value == .Used), .BooleanObject, enable_ansi_colors); -        try formatter.printComma(Writer, writer, enable_ansi_colors); +        formatter.printComma(Writer, writer, enable_ansi_colors) catch unreachable;          try writer.writeAll("\n");          // if (this.init.headers) |headers| { @@ -4164,6 +4164,32 @@ pub const Request = struct {      method: Method = Method.GET,      uws_request: ?*uws.Request = null, +    pub fn writeFormat(this: *const Request, formatter: *JSC.Formatter, writer: anytype, comptime enable_ansi_colors: bool) !void { +        const Writer = @TypeOf(writer); +        try formatter.writeIndent(Writer, writer); +        try writer.print("Request ({}) {{\n", .{bun.fmt.size(this.body.slice().len)}); +        { +            formatter.indent += 1; +            defer formatter.indent -|= 1; + +            try formatter.writeIndent(Writer, writer); +            try writer.writeAll("method: \""); +            try writer.writeAll(std.mem.span(@tagName(this.method))); +            try writer.writeAll("\""); +            formatter.printComma(Writer, writer, enable_ansi_colors) catch unreachable; +            try writer.writeAll("\n"); + +            try formatter.writeIndent(Writer, writer); +            try writer.writeAll("url: \""); +            try writer.print(comptime Output.prettyFmt("<r><b>{}<r>", enable_ansi_colors), .{this.url}); +            try writer.writeAll("\""); +            formatter.printComma(Writer, writer, enable_ansi_colors) catch unreachable; +        } +        try writer.writeAll("\n"); +        try formatter.writeIndent(Writer, writer); +        try writer.writeAll("}"); +    } +      pub fn fromRequestContext(ctx: *RequestContext, global: *JSGlobalObject) !Request {          var req = Request{              .url = ZigString.init(std.mem.span(ctx.getFullURL())), @@ -4414,7 +4440,37 @@ pub const Request = struct {          switch (arguments.len) {              0 => {},              1 => { -                request.url = JSC.JSValue.fromRef(arguments[0]).getZigString(ctx.ptr()); +                const urlOrObject = JSC.JSValue.c(arguments[0]); +                if (urlOrObject.isString()) { +                    request.url = urlOrObject.getZigString(ctx.ptr()); +                } else { +                    if (Body.Init.init(getAllocator(ctx), ctx, arguments[0]) catch null) |req_init| { +                        request.headers = req_init.headers; +                        request.method = req_init.method; +                    } + +                    if (urlOrObject.get(ctx.ptr(), "url")) |url| { +                        request.url = url.getZigString(ctx.ptr()).clone(bun.default_allocator) catch { +                            return js.JSValueMakeUndefined(ctx.ptr()); +                        }; +                    } + +                    if (urlOrObject.get(ctx.ptr(), "body")) |body_| { +                        if (Blob.fromJS(ctx.ptr(), body_, true, false)) |blob| { +                            if (blob.size > 0) { +                                request.body = Body.Value{ .Blob = blob }; +                            } +                        } else |err| { +                            if (err == error.InvalidArguments) { +                                JSC.JSError(getAllocator(ctx), "Expected an Array", .{}, ctx, exception); +                                return null; +                            } + +                            JSC.JSError(getAllocator(ctx), "Invalid Body", .{}, ctx, exception); +                            return null; +                        } +                    } +                }              },              else => {                  request.url = JSC.JSValue.fromRef(arguments[0]).getZigString(ctx.ptr()); | 
