diff options
author | 2023-05-24 22:52:13 -0300 | |
---|---|---|
committer | 2023-05-24 18:52:13 -0700 | |
commit | ed1f62ffffdd02db761513e8ac2561afa4b5a8dc (patch) | |
tree | 261982cfd30796c9b35ed3ef8fb701687bf2cdec /src | |
parent | 49729341895752f8817f444e9c87eaf4affa68bf (diff) | |
download | bun-ed1f62ffffdd02db761513e8ac2561afa4b5a8dc.tar.gz bun-ed1f62ffffdd02db761513e8ac2561afa4b5a8dc.tar.zst bun-ed1f62ffffdd02db761513e8ac2561afa4b5a8dc.zip |
[server.fetch] call when using Request object (#3051)
* patch server.fetch
* add tests and fix types
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/api/server.zig | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig index 463e26c0a..bb48f5786 100644 --- a/src/bun.js/api/server.zig +++ b/src/bun.js/api/server.zig @@ -4653,10 +4653,9 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { var args = JSC.Node.ArgumentsSlice.from(ctx.bunVM(), arguments); defer args.deinit(); - var url: URL = undefined; var first_arg = args.nextEat().?; var body: JSC.WebCore.Body.Value = .{ .Null = {} }; - var existing_request: ?WebCore.Request = null; + var existing_request: WebCore.Request = undefined; // TODO: set Host header // TODO: set User-Agent header if (first_arg.isString()) { @@ -4669,7 +4668,7 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { return JSPromise.rejectedPromiseValue(globalThis, ZigString.init(fetch_error).toErrorInstance(globalThis)).asRef(); } - url = URL.parse(temp_url_str); + var url = URL.parse(temp_url_str); if (url.hostname.len == 0) { url = URL.parse( @@ -4704,24 +4703,22 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { } } } - } else if (first_arg.as(Request)) |request_| { - existing_request = request_.*; - } else { - const fetch_error = WebCore.Fetch.fetch_type_error_strings.get(js.JSValueGetType(ctx, arguments[0])); - return JSPromise.rejectedPromiseValue(globalThis, ZigString.init(fetch_error).toErrorInstance(globalThis)).asRef(); - } - if (existing_request == null) { existing_request = Request{ .url = url.href, .headers = headers, .body = JSC.WebCore.InitRequestBodyValue(body) catch unreachable, .method = method, }; + } else if (first_arg.as(Request)) |request_| { + existing_request = request_.*; + } else { + const fetch_error = WebCore.Fetch.fetch_type_error_strings.get(js.JSValueGetType(ctx, arguments[0])); + return JSPromise.rejectedPromiseValue(globalThis, ZigString.init(fetch_error).toErrorInstance(globalThis)).asRef(); } var request = ctx.bunVM().allocator.create(Request) catch unreachable; - request.* = existing_request.?; + request.* = existing_request; var args_ = [_]JSC.C.JSValueRef{request.toJS(this.globalThis).asObjectRef()}; const response_value = JSC.C.JSObjectCallAsFunctionReturnValue( @@ -4745,9 +4742,8 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { } if (response_value.as(JSC.WebCore.Response)) |resp| { - resp.url = this.allocator.dupe(u8, url.href) catch unreachable; + resp.url = this.allocator.dupe(u8, existing_request.url) catch unreachable; } - return JSC.JSPromise.resolvedPromiseValue(ctx, response_value).asObjectRef(); } |