aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Ciro Spaciari <ciro.spaciari@gmail.com> 2023-05-24 22:52:13 -0300
committerGravatar GitHub <noreply@github.com> 2023-05-24 18:52:13 -0700
commited1f62ffffdd02db761513e8ac2561afa4b5a8dc (patch)
tree261982cfd30796c9b35ed3ef8fb701687bf2cdec /src
parent49729341895752f8817f444e9c87eaf4affa68bf (diff)
downloadbun-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.zig22
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();
}